首页  >  问答  >  正文

如何授予 PHP 对目录的写权限?

<p>我正在尝试使用 PHP 创建文件,但它不起作用。我假设这是因为它没有写访问权限(以前一直是这个问题)。我尝试通过使文件夹 chmod 0777 来测试这是否是问题所在,但这最终导致该目录中的每个脚本都返回 500 错误消息,直到我将其更改回来。 如何授予 PHP 对我的文件系统的写访问权限,以便它可以创建文件?</p> <p>编辑:它托管在使用 Apache 的 Hostgator 共享托管上。</p> <p>编辑2:有人询问代码: 该代码是GD图像脚本。我知道它的其余部分的工作原理就像以前我在每次调用它时创建图像一样。现在我尝试在添加新文本时创建它们并将它们保存到文件夹中。我的写入行是: imagejpeg(null,$file,85);</p> <p>我还创建了一个测试文件来检查它是否只是一个损坏的脚本(主要是从 tizag 复制的): http://gearboxshow.info/rkr/lesig.jpg/testfile.txt(我不知道是否/如何正确地在此处发布代码。这是 PHP 脚本的内容,减去 PHP 标签。)</p> <p>它返回13,13,1(单独的行),所以看起来好像它认为它写了一些东西,但是testfile.txt是空白的(我上传了一个空白的),或者不存在(如果我删除它) )。</p> <p>编辑3:服务器运行CentOS。</p>
P粉512363233P粉512363233442 天前562

全部回复(2)我来回复

  • P粉376738875

    P粉3767388752023-08-28 09:42:11

    简单的三步解决方案


    第 1 步:确定 PHP 用户

    创建一个包含以下内容的 PHP 文件:

    <?php echo `whoami`; ?>

    将其上传到您的网络服务器。输出应类似于以下内容:

    www-data

    因此,PHP 用户是 www-data


    第 2 步:确定目录所有者

    接下来,通过命令行检查Web目录的详细信息:

    ls -dl /var/www/example.com/public_html/example-folder

    结果应类似于以下内容:

    drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder

    因此,该目录的所有者是 exampleuser1


    第 3 步:将目录所有者更改为 PHP 用户

    然后,将Web目录的所有者更改为PHP用户:

    sudo chown -R www-data /var/www/example.com/public_html/example-folder

    验证 Web 目录的所有者是否已更改:

    ls -dl /var/www/example.com/public_html/example-folder

    结果应类似于以下内容:

    drwxrwxr-x 2 www-data exampleuser2 4096 Mar 29 16:34 example-folder

    至此,example-folder 的所有者已成功更改为 PHP 用户:www-data


    完成! PHP 现在应该能够写入该目录。

    回复
    0
  • P粉352408038

    P粉3524080382023-08-28 09:07:16

    一个简单的方法是让 PHP 首先创建目录本身。

    <?php
     $dir = 'myDir';
    
     // create new directory with 744 permissions if it does not exist yet
     // owner will be the user/group the PHP script is run under
     if ( !file_exists($dir) ) {
         mkdir ($dir, 0744);
     }
    
     file_put_contents ($dir.'/test.txt', 'Hello File');

    这可以为您省去权限方面的麻烦。

    回复
    0
  • 取消回复