我上传文件的 PHP 脚本无法在比它本身更高级别的目录中执行此操作。
例如:它会保存在upload/
(与脚本同级的相对路径)中,但不会保存在/usr/local/hello/
中尽管文件权限完全相同。最大上传大小、最大帖子大小、执行时间都没有问题,并且安全模式已关闭。有人有什么想法吗?我什至无法得到错误消息 - 只是下面的 $worked
在失败时返回 false。
<?php
// Removed the rest of the error-checking code!
$contentDir = "/usr/local/hello/"; // <-- doesn't work, chmod 0777, owner: root, group root
//$contentDir = "upload/"; <-- works, chmod 0777 owner: root, group: root
error_reporting(E_ALL);
$filename = $_FILES["filey"]["name"];
$worked = move_uploaded_file(
$_FILES["filey"]["tmp_name"],
$contentDir.$filename);
var_dump($worked);
?>
编辑:我的 open_basedir 设置由 phpinfo() 给出,如下:
Directive Local Value Master Value
open_basedir no value no value
谢谢!
最佳答案
open_basedir
配置变量可能会限制目录。
参见open_basedir
在 PHP 手册中。
关于PHP无法上传比它更高的目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3295052/