php无法移动上传文件,PHP:无法将文件移动到其他文件夹

我正在尝试将使用PHP上传的文件移动到其他文件夹,但不知怎的,这将无法正常工作,从而导致:

move_uploaded_file(upload/tmp/phpxEGMLG): failed to open stream: Permission denied

所以,显然我没有 upload/tmp (实际上是 /var/www/html/upload/tmp )的适当权限 .

我已经为 777 设置了权限,为 /var/www/html/upload/tmp 设置了所有者 root:root ,以确保无法解决问题 .

但那并没有解决它......

我试过的其他事情:

将所有者设为 apache:apache

将源文件权限更改为 777 和所有者 root (默认情况下,所有者设置为 apache )

检查PHP设置(几乎默认, /var/www/html 和 /tmp 在 open_basedir 内, upload_tmp_dir 未设置)日志

检查Apache设置日志

在同一文件夹中移动文件 - >这有效!

将其移动到另一个其他文件夹 - >不起作用

将所有父目录设置为 777 和所有者 root 或 apache

我创建了一个测试脚本:

echo 'TESTING FILE MOVE' . '
';

echo getcwd() . '
';

echo get_current_user() . '
';

error_reporting(E_ALL);

file_put_contents('/tmp/tst.txt', 'this is a test');

chdir('/var/www/html/upload/tmp');

echo getcwd() . '
';

rename('/tmp/tst.txt', 'tst-2.txt');

print_r(error_get_last());

它给出了如下输出:

TESTING FILE MOVE / var / www / html root / var / www / html / upload / tmp Array([type] => 2 [message] => rename(/tmp/tst.txt,tst-2.txt):权限被拒[文件] => /var/www/html/test.php [line] => 13)

这告诉我脚本在哪个用户下运行,我在正确的目录中 . 它还省略了 move_uploaded_file 使用的额外检查,重点是移动文件 .

有关我的设置的一些信息:

CentOS 7

PHP 7.1

PHP-FPM

Apache 2.4.6

它为PHP-FPM使用单独的临时目录,如 /tmp/systemd-private-xxxx-php71-php-fpm.service-yyyy/tmp/ . 也许有一些原因它无法将文件移到此目录之外?虽然我找不到任何东西......

我希望有人可以告诉我可能发生的事情!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值