【发布时间】:2020-11-24 05:59:20
【问题描述】:
我正在尝试使用以下代码在我的 PHP 应用程序中创建一个文件:
$file = @fopen(Data::$FILE_PATH, 'w'); //I also tried with 'x'
if(!$file)
{
new ErrorReporter('Error 3');
return;
}
它总是显示错误 3 文本。
PHP 脚本有 chmod 777,我尝试制作 $FILE_PATH:
- /var/www/data.json
- /var/data.json
- /root/data/data.json
- /var/test/data.json
但以下方法均无效,文件从未创建。
我尝试手动创建文件并使用以下函数对其进行调试:
private function debug()
{
$file = Data::$FILE_PATH;
error_reporting(E_ALL);
ini_set('display_errors', true);
echo 'phpversion: ', phpversion(), "\n";
echo 'uname: ', php_uname("s r"), "\n"; // name/release of the operating system
//echo 'sapi: ', php_sapi(), "\n";
echo $file, file_exists($file) ? ' exists' : ' does not exist', "\n";
echo $file, is_readable($file) ? ' is readable' : ' is NOT readable', "\n";
echo $file, is_writable($file) ? ' is writable' : ' is NOT writable', "\n";
$fp = fopen($file, 'w');
if ( !$fp ) {
echo 'last error: ';
var_dump(error_get_last());
}
else {
echo "ok.\n";
}
die('done');
}
文件:
- 存在
- 可读
- 不可写
调试函数中出现的错误是:
failed to open stream: Permission denied in /path/to/the/file on line 108
第 108 行内容:
$fp = fopen($file, 'w');
但正如我之前所说,脚本的 chmod 是 777,$FILE_PATH 文件是 664。
在这种情况下谁能帮助我?
【问题讨论】:
-
你不能在这些目录中写...这再明显不过了,或者可以更好地解释没有人可以为你“修复”,使用另一个你被允许的目录写。
-
即使在 /var/www/data.json 中?
-
脚本文件的权限无关。重要的是您尝试写入的文件夹的权限,以及脚本运行的“用户”身份。
标签: php