tmpfile()
やなどの tmp ディレクトリにファイルを作成する関数に問題がありtempnam()
ます。それらはすべて tmp への書き込みに失敗し、false を返すようです。upload_tmp_dir
php iniで設定されており、ファイルのアップロードは正常に機能します。
このエラーをデバッグするsys_get_temp_dir()
と、tmp ディレクトリの場所を取得することがわかりました。残念ながら、私の PHP バージョン (5.1.6) ではサポートされていません。また、次のメソッドを使用すると、の機能が置き換えられることもわかりましたsys_get_temp_dir()
。
if ( !function_exists('sys_get_temp_dir')) {
function sys_get_temp_dir() {
if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
$tempfile=tempnam(__FILE__,'');
if (file_exists($tempfile)) {
unlink($tempfile);
return realpath(dirname($tempfile));
}
return null;
}
}
しかし、$_ENV 配列には tmp ディレクトリへの参照がなく、tempnam()
前述のように失敗します。
また、open_basedir が設定されていないため、同様の問題が発生する可能性があると聞いています
tmp ディレクトリがどこにあるか、または設定されているかどうかを確認するにはどうすればよいですか?
これは Apache サーバーの構成の問題ですか、それとも PHP の問題ですか?
ご協力いただきありがとうございます