4

このアプリケーションでは、ストリーミング メディア ソフトウェアからアクセスできるように、ファイルをルートの上に保存する必要があります。

以下からシンボリックリンクを正常に作成しました。

/var/www/vhosts/myhost.com.au/httpdocs/fileserver/videostream/

に:

/usr/local/MediaServer/content/

そして PHP は、ルートの上の実際のファイルへのシンボリック リンクに従って、生のビデオを喜んで処理します。

しかし、試してみると

file_exists('/var/www/vhosts/myhost.com.au/httpdocs/fileserver/videostream/myfile.mp4') 

あらゆる種類の「open_basedir の制限が有効です」というエラーが発生します。

これを回避する方法はありますか?または、データベースのエントリが正しく、ファイルが処理されたと言う場合、実際には処理されたと仮定する必要がありますか?

fopen を試してみるとうまくいきますか、それとも basedir の制限がまだありますか?

ルート権限のある専用ホスト上にいるので、必要なことは何でもできます。

ありがとう。


回避策を見つけましたが、問題は解決しません:-)

実際に CURL を使用して、実際のファイルのヘッダーを取得できます。これにより、ファイルが存在するかどうかを知ることができます。さらに、CURL を使用してそのファイルのストリーミング メディア サーバーのカスタム URL の存在を確認する方法もあります。問題は解決しましたが、私が望んでいた方法ではありません。

4

2 に答える 2

0

リンクが存在するかどうかだけを確認したい場合 (basedir の制限のためにアクセスできないリンク ターゲットが存在するかどうかは確認しない場合) は、代わりにreadlink関数を使用できますfile_exists。文字列が返された場合はリンクが存在し、返された場合はリンクが存在falseしない可能性が高くなります。

if (@readlink($filename) !== false)
{
    echo "Yay!";
}

理論的には、ここで basedir の制限がトリガーされるべきではありませんが、確かなことはわかりません。

于 2011-02-23T06:53:54.187 に答える