fopen()无法在linux上创建文件

时间:2013-07-21 19:26:01

标签: php linux

我正在尝试通过fopen()创建一个文件,如下所示:

<?php 
  $handle = fopen('name.txt', 'w') or die('Can\'t create file');
  fwrite($handle, 'Hamed'."\n");
  fwrite($handle, 'Kamrava'."\n");
  echo 'File was created successfully';
?>

但是没有创建该文件并让我:

Can't create file

P.S:

我在Linux / Ubuntu上使用LAMP服务器。

我在创建该文件之前尝试过以下命令:

sudo chmod -R 755 ~/public_html/

任何想法都会受到赞赏。

3 个答案:

答案 0 :(得分:9)

PHP脚本作为为Apache Web服务器配置的用户执行。要创建文件,此用户必须具有您要在其中创建文件的目录的写入权限。有两种方法可以做到这一点:

您可以为所有用户提供目录的写权限,其中包括为Apache配置的任何内容(对于开发计算机来说足够好):

chmod o+w ~/public_html/directory_where_you_want_to_write

您可以将目录的所有权传递给Apache用户。这意味着,除非您也执行上述操作,否则使用常规用户帐户的 将无法在此目录中创建或删除文件。假设Apache使用www-data用户帐户运行,就像默认情况下在Ubuntu上运行一样,您可以这样做:

sudo chown www-data ~/public_html/directory_where_you_want_to_write

(目录不必在public_html之下,我只是以它为例,因为它似乎是你的文件所在。)

答案 1 :(得分:0)

该文件夹必须由apache用户拥有,所以:

sudo chown -R www-data:www-data ~/public_html/

答案 2 :(得分:0)

将文件夹(您尝试创建的文件)的权限更改为所有权限

sudo chmod 777