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

时间:2012-02-08 20:03:34

标签: php file-io ftp file-permissions

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

我无法使用php创建文件,因为该文件已获得该权限。 我收到这个错误:

  

警告: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网络应用程序将文件上传到我的网站,如果重要的话。

3 个答案:

答案 0 :(得分:17)

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

因此你需要:

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

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

PS。更改&#34;文件夹&#34;为您的实际文件夹名称。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

sudo chmod 777 ./uploads