我无法将 PHP 中的文件复制到 apache2 Web 服务器中 /var/www 之外的另一个目录



我想用PHP复制一个文件。但是,我遇到了一个不是语法的问题。知道我已经为文件执行了chmod命令以便能够复制和更改! 这是我的代码:

此代码不起作用!

<?php
    $file = 'example.txt';
    $newdir  = '/home/Dell/Desktop';
    $newfile = 'example.txt.bak';
    echo "Trying to copy  $file...<br><br>  ";
    echo' loading .... <br>';
    echo' loading .... <br>';
    if (!copy($file, $newdir.'example.txt.bak')) {
        echo "failed to copy $file...n";
    } 
    else {
        echo' the file should be in'. $newdir;
    }

    //this code is working cause I have changed the location to /var/www/ directory!!!
    $file = 'example.txt';
    $newdir  = '/var/www/';
    $newfile = 'example.txt.bak';
    echo "Trying to copy  $file...<br><br>  ";
    echo' loading .... <br>';
    echo' loading .... <br>';
    if (!copy($file, $newdir.'example.txt.bak')) {
        echo "failed to copy $file...n";
    }
    else {
        echo' the file should be in'. $newdir;
    }
?>

我试过:

 move_uploaded_file()
 copy()
 rename()

没有任何效果!.请在这里提供帮助。

它不是PHP,而是Apache。您的 Apache 用户无权(或只是不允许(写入给定的目录。

这是解决方案:

  1. 通过执行 awk -F= '$1 == "export APACHE_RUN_GROUP" {print $2}' /etc/apache2/envvars 找到您的 Apache 组。如果您在 ubuntu 中使用 Apache2,则默认用户和组将为 www-data
  2. 通过执行 sudo chown :www-data /home/Dell/Desktop -R 递归地标记目标目录(在您的情况下,它会/home/Dell/Desktop (
  3. 通过执行 chmod 递归地 chmod 目标目录(同样,在您的情况下,它会/home/Dell/Desktop sudo chown :www-data /home/Dell/Desktop && sudo chmod 775 /home/Dell/Desktop && sudo find /home/Dell/Desktop -type d -exec chmod 775 {} ; && sudo find /home/Dell/Desktop -type f -exec chmod 664 {} ;

相关内容

最新更新