使用 PHP 打开或创建文件时权限被拒绝

Posted

技术标签:

【中文标题】使用 PHP 打开或创建文件时权限被拒绝【英文标题】:Permission denied when opening or creating files with PHP 【发布时间】:2012-03-01 07:34:09 【问题描述】:

我不能用 php 创建文件,因为文件 dosent 获得了许可。 我收到此错误:

警告:fopen(test.txt):无法打开流:第 20 行 /web/com/example.com/index.php 中的权限被拒绝 警告:fwrite() 期望参数 1 是资源,布尔值在第 21 行的 /web/com/example.com/index.php 中给出 警告:fclose() 期望参数 1 是资源,布尔值在第 22 行的 /web/com/example.com/index.php 中给出

这是我使用的代码:

<?php
 $file = fopen("test.txt","w");
 echo fwrite($file,"Hello World. Testing!");
 fclose($file);
 ?> 

就这么简单!这是example code from w3schools。

所以我需要帮助来了解如何为文件授予所需的权限。 我正在使用net2ftp FTP Web 应用程序将文件上传到我的网站,如果有必要的话。

【问题讨论】:

阅读一些教程以了解您处理的内容,例如dartmouth.edu/~rc/help/faq/permissions.html - 我认为这对你最有帮助。 这将取决于服务器设置。您需要找出您的 PHP 进程以哪个用户身份运行,并将该用户的读写权限应用到目录。有一些常见的默认值,所以如果你可以发布你正在使用的主机、Apache、IIS 等,它可能会有所帮助。 通过 ssh (ls -l in directory) 查看服务器上的权限 w3fools 【参考方案1】:

我正在使用 Ubuntu,我通过在我正在写入文件的文件夹(即上传)上的一个目录中运行以下命令来解决它。

sudo chmod 777 ./uploads

【讨论】:

【参考方案2】:

您的 PHP 脚本试图写入的文件夹可能归 root 用户所有。如果您使用默认的 Ubuntu/Apache/PHP 设置,您的 PHP 脚本很可能在 www-data 用户下运行。

因此,您需要:

chown -R www-data:www-data folder
chmod -R g+w folder

如果您发现 PHP 在不同于 www-data 的用户下运行,则只需在第一行代码中将用户更改为组。

附言。将“文件夹”更改为您的实际文件夹名称。

【讨论】:

我在哪里输入?当我尝试将该代码发送到 ftp 服务器时,它响应:500 unknown command 它不知道“chown”命令是什么,但它确实知道“chmod”命令,但是!当我将“文件夹”更改为任何文件或文件夹(例如“/index.php”或“/test”(我使用和不使用引号和斜杠进行测试))时,它响应:550 无法更改 g+ 上的权限w /test: 没有这样的文件或目录 我假设您在命令行上,而不是使用 FTP 客户端。您需要在命令行上才能真正运行 chown 命令。在这种情况下,我唯一可以建议的是将文件夹 chmod 为 0777,但这不是我真正推荐的。 我使用的是 FTP 客户端! link!我转到“高级”,然后“向 FTP 服务器发送任意 FTP 命令”,然后在框中键入命令...【参考方案3】:

运行 PHP 的用户(通常是 apache 用户)对运行脚本的文件夹没有写入权限。尝试使用绝对路径,例如“/tmp/test.txt”——tmp 通常可由以下用户写入任何用户,但内容往往会在重新启动时被清除。

【讨论】:

以上是关于使用 PHP 打开或创建文件时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

无法打开流或文件:无法打开流:权限被拒绝

Win 10 + Git - 无法创建文件 - 权限被拒绝

尝试打开或创建物理文件 REATE FILE 遇到操作系统错误 5(拒绝访问)

DOMDocument 保存无法打开流:如果 https [重复],则权限被拒绝

挂载文件时获取权限被拒绝错误

无法打开流或文件:无法打开流:权限被拒绝[重复]