0

シンボリックリンクに目玉を付けることはできますか?

あるディレクトリからファイルをダウンロードしようとしていますが、ファイルは実際には別のディレクトリに存在します。

実際のファイルと別のサブディレクトリにあるシンボリック リンクを取得しましたが、どちらもパブリック html に存在します (どちらも Web アクセス可能です)。

ファイルに直接アクセスして、(共有 Linux) サーバー上のファイルとファイルの場所を確認しました。

リンクが作成されており (readlink、is_link、および linkinfo を使用しました)、FTP で接続すると表示されます。

おそらくディレクトリ構造を誤解しているだけだと思います。

ここにファイルを置きます: ./testdownload/

ここにシンボリックリンクを置きます: ./testDelivery/

<?php
$fileName = "testfiledownload.zip";//Name of File
$fileRepository = "./testdownload/";//Where the actual file lives
$downloadDirectory = "./testDelivery/";//Where the symlink lives
unlink($downloadDirectory . $fileName);  // Deletes any previously exsisting symlink (required)
symlink($fileRepository . $fileName, $downloadDirectory . $fileName); 
$checkLink = ($downloadDirectory . $fileName);
if (is_link($checkLink))
{
    echo ("<br>Symlink reads: " .readlink($checkLink) . "<br>");
    echo ("<br>LinkeInfo reads: " . linkinfo($checkLink));
}
?>
<p><a href="<?php echo ("/testDelivery/" . $fileName); ?>"</a>SymLink</p>
<p><a href="<?php echo ("/testdownload/" . $fileName); ?>"</a>regular link</p>

私にはすべてが正しいように見えます....しかし、リンクは機能しません。ヘルプ?

最終的には、ソース データを公開領域の外に置きます...これはテスト用です。

(接続不良で失敗する fread をチャンクアウトするよりも、ダウンロードのためのより良い解決策を見つけようとしています。(200-400MB ファイル))

4

1 に答える 1

0

私の問題は、シンボリックリンクの絶対パスを提供していないようです。

作業コピーを作成するために、上記の同じコードに以下の絶対パスを追加しました。

<?php
$absolutepath = ( $_SERVER['DOCUMENT_ROOT']);
$fileName = "testfiledownload.zip";//Name of File
$fileRepository = "/testdownload/";//Where the actual file lives
$downloadDirectory = "/testDelivery/";//Where the symlink lives
unlink($absolutepath .$downloadDirectory . $fileName);  // Deletes any previously exsisting symlink (required)
symlink($absolutepath . $fileRepository . $fileName, $absolutepath. $downloadDirectory . $fileName); 
$checkLink = ($absolutepath . $downloadDirectory . $fileName);
if (is_link($checkLink))
{
    echo ("<br>Symlink reads: " .readlink($checkLink) . "<br>");
    echo ("<br>LinkeInfo reads: " . linkinfo($checkLink));
}
?>
<p><a href="<?php echo ("/testDelivery/" . $fileName); ?>"</a>SymLink</p>
<p><a href="<?php echo ("/testdownload/" . $fileName); ?>"</a>regular link</p>

この元の投稿は重複しています (ただし、今まで見たことはありません) PHP ファイルの有効なシンボリック リンクを作成します (ただし、その質問に対する回答のほとんどは間違っていましたが、元の投稿者はそれを理解し、機能しました僕にも)

于 2012-12-18T22:30:11.407 に答える