0 レビュー
1 回答
linux-HostgatorのjailedシェルでPHPを使用してSYMLINKを作成する-PermDeniedエラーを取得する
だから私はこの問題であなたに来ます:
与えられたもの:
- ISPとしてHostgatorを使用しています。
- PHP5.5を使用しています
- LINUXボックスはCENTOSです
- 共有ホスティング環境
- 私はプロのコーダーであり、LAMPの経験が長年あります
問題:
- Jailed Shellに精通していませんが、アイデアはあります
- スクリプトを試し、答えを探していました
- まだ立ち往生しています...
現在のコードは次のとおりです:
function getMyFakeDir($myfile) { $target = ""; $link = 'content/purchased-items/link'; symlink($target, $link); echo "READ LINK: ". readlink($link); return readlink($link); }
関数の呼び出しは次のとおりです:
$linkText = getMyFakeDir('SomePDFThatTheUserCanDownload.pdf');
次に、その「$linkText」変数をPHPMailerとwalaに渡します!!!ユーザーがクリックしてシンボリックリンクからダウンロードし、24時間後に期限切れになるようにコードを記述しました。ええ、PHP.netから入手しました。
つまり、基本的にそれが私の問題です...
エラーは次のとおりです:
Warning: symlink(): Permission denied in /homeSomewhere/someMasterDir/public_html/webServices/somePHPFile.php on line 654
これは上からのリンク654です:
symlink($ target、$ link);ありがとう...
わからない
0
レビュー
答え :
解決策:
理解しました....シンプルなロジック!
最初に、PATHSがすべて間違っていました。修正されたコードは次のとおりです:
//Generate Symbolic Link that blows away a fake directory each time
//A symbolic Link is created to "THIS" file below
$filename = $myfile;
//This is ANY directory on the server...
//A randomly named directory is created here...STEP 1
$downloaddir = "/home/someHostDir/public_html/sldktrulwiu2555ivd0fjvdfgdfgdfgdf/";
//Any directory NOT accessible by a browser - This is one level up
$safedir = "/home/someHostDir/content/purchased-items/";
//This is the equivalent of the $downloaddir and the browser is REDIRECTED here and the download begins
$downloadURL = "http://www.theSomeDomain.com/sldktrulwiu2555ivd0fjvdfgdfgdfgdf/"; //THIS IS THE FAKE DIRECTORY (Which I simply type gobbligook and created that mess above)
$letters = 'abcdefghijklmnopqrstuvwxyz';
srand((double) microtime() * 1000000);
$string = '';
for ($i = 1; $i <= rand(4, 12); $i++) {
$q = rand(1, 24);
$string = $string . $letters[$q];
}
$handle = opendir($downloaddir);
while ($dir = readdir($handle)) {
if (is_dir($downloaddir . $dir)) {
if ($dir != "." && $dir != "..") {
@unlink($downloaddir . $dir . "/" . $filename);
@rmdir($downloaddir . $dir);
}
}
}
closedir($handle);
mkdir($downloaddir . $string, 0777);
symlink($safedir . $filename, $downloaddir . $string . "/" . $filename);
//Header("Location: " . $downloadURL . $string . "/" . $filename);
これでほぼ完了です。
結果は、「/ sldktrulwiu2555ivd0fjvdfgdfgdfgdf /」ディレクトリ内の「dfsgss/」のような動的ディレクトリと、ファイルがある実際の場所への「ショートカット」です。次に、ファイルがダウンロードされ、ページがINDEX.HTMLに戻ると、コードがFAKEディレクトリを吹き飛ばします。これ以上表示されることはありません。したがって、ユーザーが戻りたい場合は、ファイル/が移動または削除されたという恐ろしい404PAGEエラーが発生します。バマー。
それは人々です。あなたの助けに感謝します、それは私が私のエラーを解放するのを助けてくれたすべての人でした。チームワーク!
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。