Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过在浏览器中运行页面来删除文件和文件夹?_Php_Linux_Shell - Fatal编程技术网

Php 如何通过在浏览器中运行页面来删除文件和文件夹?

Php 如何通过在浏览器中运行页面来删除文件和文件夹?,php,linux,shell,Php,Linux,Shell,我下面的函数可以工作,但在Linux中,某些文件和文件夹不会被删除, 我相信是的,服务器不允许在浏览器中运行 如果我在shh中运行该功能,或授予777 shh或ftp的权限,文件和文件夹将正常删除 但服务器阻止了对浏览器的权限更改 我想我需要在shell中运行pagina.php,但是如何在浏览器上运行pagina.php呢 我的职能: <?php function deleteItem($item) { if (file_exists($item)) {

我下面的函数可以工作,但在Linux中,某些文件和文件夹不会被删除, 我相信是的,服务器不允许在浏览器中运行

如果我在shh中运行该功能,或授予777 shh或ftp的权限,文件和文件夹将正常删除

但服务器阻止了对浏览器的权限更改

我想我需要在shell中运行pagina.php,但是如何在浏览器上运行pagina.php呢

我的职能:

<?php
    function deleteItem($item) {
        if (file_exists($item)) {
            if (is_dir($item)) {
                $folders = scandir($item);
                foreach ($folders as $folder) {
                    if ($folder != '.' && $folder != '..') {
                        $file = $item . "/" . $folder;
                        if (filetype($file) == "dir") {
                            deleteItem($file);      
                        } else {
                            unlink($file);
                        }   
                    }               
                }
                reset($folders);
                rmdir($item);               
            } else {            
                unlink($item);          
            }                        
        }
    }
?>

我想你的页面是在Apache上运行的吧

不管怎样,我们的想法是将这些文件和目录的写访问权授予为浏览器提供页面服务的web服务器

由于他运行PHP为您的页面服务,unlink()命令是以其名称运行的,而不是以您的名称运行的。 这里的最佳实践是对您的Web服务器在公共目录(可在www根目录下访问)中提供服务/管理的文件授予完全权限,很明显,他必须拥有要删除的目录,并且这些目录应该在www根目录中


注意:在网站www目录外为您的Web服务器授予写权限可能很危险。

解决方案是提醒用户更改无法删除的权限,并旋转和刷新页面。

PHP不在浏览器中运行。它在服务器上运行。然后服务器将输出发送到浏览器。当您尝试从浏览器运行pagina.php时会发生什么?您是否收到“不在允许的路径内:”错误或其他错误?但是如何100%删除所有通过的文件和文件夹@Quentin有些返回的文件和文件夹是不允许的,尽管没有权限,但有些被删除@jnevilperhaps这与此有关:我知道这是prerigoso给予权限,但通过php/browser不能给予权限,服务器将不允许权限必须是递归的,我的代码必须在任何服务器上运行,不能去手动给权限当然不会让你做这样的事情!在运行web页面之前,由您(通常在服务器端使用SSH)确保您的web服务器具有对这些文件的写访问权限。我建议您管理您的业务逻辑,使您能够将要删除的文件放在www根目录下的目录中(该目录必须由您的web服务器所有)并确保将它们放在那里的人员/程序(通过chmod/chown)给予Web服务器它们的所有权