2010-12-04 18 views
1

私はアクセス可能な.tgzファイルをたくさん持っています。シンボリックリンクシンボリックリンクを指し示しているページのhrefをクリックすると、むしろ奇妙なファイルがダウンロードされます。ダウンロードされたファイルにはシンボリックリンクの名前があり、アーカイブを開くとバイナリファイルが得られます。バイナリファイルは、静的ファイルの内容であってもなくてもかまいません。symlinksを使用したPHPファイルのダウンロード

私がしたいのは、実際のシンボリックリンクではなく、symlinkによってリンクされたファイルを提供するファイルダウンロードダイアログをPHPに表示させることです。それは可能ですか?

答えて

3

まあはあなたに私はあなたがファイルを提供する方法についての詳細を知っておく必要があります正確な答えを与えること。 なぜPHPは関係していますか?ウェブサーバーが提供するファイルではありませんか?あなたはそれにリダイレクトするか、それを印刷する場所からPHPスクリプトのメモリに読み込みますか?

しかし、私はこれを伝えることができます。

PHPはシンボリックリンクをファイルとして扱うことがほとんどであり、リンクの背後にあるファイルを穏やかに提供することはありません。

リソースポインタがリンクであるかどうかをチェックするis_link()があります。 リンクの後ろにファイルを提供する関数readlink()があり、リンクに関する情報を提供するlinkinfo()があります。 。

しかし、ほとんどの場合、使用しているApacheを明示的に許可する必要があります。シンボリックリンクは、ApacheのOptions FollowSymLinksディレクティブと一緒に使用できます。

+0

いいえ、オプションfollowSymLinksは疑わしいと思われます – ajreal

+1

ありがとうジョー。私は最終的に、 'header()'パラメータを渡した後で、この行を使ってファイルを読み込みました: 'readfile(readlink(" path/to/symlink "));' – Bojangles

+0

Apache設定スイッチを使ってみました。無駄に。 – Bojangles

1

PHPにはreadlinkがあり、ターゲットとする/リンク先のパスを取得できます。
しかし、あなたの問題はApacheのリライト、または(再)絶対パス

PSに関係していると思う :tgzファイルの拡張子は、Apacheのパントマイムでを支えたのですか?

は参照してください:http://www.w3schools.com/media/media_mimeref.asp

関連する問題