8

我正在尝试通过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

PS:

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

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

sudo chmod -R 755 ~/public_html/

任何想法,将不胜感激。

4

3 回答 3

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,我只是将其用作示例,因为这似乎是您的文件所在的位置。)

于 2013-07-21T19:59:41.750 回答
0

该文件夹必须由 apache 用户拥有,因此:

sudo chown -R www-data:www-data ~/public_html/
于 2013-07-21T19:30:55.243 回答
0

将文件夹(您要在其中创建)的权限更改为所有权限

sudo chmod 777 
于 2015-01-03T10:51:36.477 回答