我在Centos上使用PHP 7.3 + nginx。我的应用程序包含一个已安装的文件夹,其中包含来自另一台服务器的文件。一旦我对它们没有用处,就需要删除它们。我使用下面的代码删除了这些文件。代码可以正常工作,但是其中一些文件的创建受到更多限制(只能读取),并且如果我在文件上手动设置chmod -R 775,我的应用程序只能删除它们。
function remove_dir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir"){
remove_dir($dir."/".$object);
}else {
unlink ($dir."/".$object);
}
}
}
reset($objects);
rmdir($dir);
return true;
}
return false;
}
我已经尝试过了:
$command = "chmod -R 775 ".$folder;
exec($command);
但总是以:
结尾警告:[pool www]子n对stderr说:“ chmod:更改'/ folder / file'的权限:不允许操作”
是否可以设置这些权限,或者我需要使用已设置的正确权限创建要删除的文件?
我尝试过这个,但是它也给我权限错误。
$command = "rm -rf {$local}";
exec($command, $output, $status);
对stderr说:“ rm:无法删除'文件夹/文件':权限被拒绝”
编辑:因此,我阅读了许多建议,我发现最好不要通过网络应用程序来执行此操作,即使该应用程序仅在公司内部运行也是如此。我创建了一个脚本,然后我将通过crontab运行。解决我的问题,没有任何安全隐患。
答案 0 :(得分:0)
更改权限的示例:
<?php
$fn = './test.txt';
chmod($fn, 0777);
请注意,我们在777之前加了0,要求PHP将其解释为八进制数字。