Safe Mode ServerにPHP ReadFile()に代わるものはありますか?
-
27-10-2019 - |
質問
共有ホスティングでサイトをホストしていますが、最近サーバーをセーフモードに変更しました(通知することなく)。サーバーからファイルをダウンロードする機能を使用して、 readfile() 関数(PHPを使用しています)。これで、safe_modeでは、この関数は使用できなくなりました。ファイルがユーザーがダウンロードできる状況を処理するための交換または回避策はありますか?
ありがとう
解決
コメントで書いたように、 readfile()
それを含めることによって無効になります disable_functions
php.ini 指令。それは何の関係もありません セーフモード. 。どの機能が無効になっているかを確認してみて、他のファイルシステム関数(-s)を使用して何をすることができるかを確認してみてください readfile()
します。
障害のある関数のリストを表示するには、以下を使用してください。
var_dump(ini_get('disable_functions'));
使用する場合があります:
// for any file
$file = fopen($filename, 'rb');
if ( $file !== false ) {
fpassthru($file);
fclose($file);
}
// for any file, if fpassthru() is disabled
$file = fopen($filename, 'rb');
if ( $file !== false ) {
while ( !feof($file) ) {
echo fread($file, 4096);
}
fclose($file);
}
// for small files;
// this should not be used for large files, as it loads whole file into memory
$data = file_get_contents($filename);
if ( $data !== false ) {
echo $data;
}
// if and only if everything else fails, there is a *very dirty* alternative;
// this is *dirty* mainly because it "explodes" data into "lines" as if it was
// textual data
$data = file($filename);
if ( $data !== false ) {
echo implode('', $data);
}
他のヒント
私はあなたが使用していると思います readfile
「サーバーから」と言ったように、リモートファイルをロードします。それが正しい場合、あなたの問題はセーフモードではありませんが、通常のPHPファイル機能を備えたオープニングURLはもう許可されていません(設定はもはや許可されていません allow_url_fopen
無効)。
その場合、PHPを使用できます カール関数 ファイルをダウンロードします。また、 file_get_contents
有効な代替手段です。
所属していません StackOverflow