fopen() 在调试会话中正常工作,但当我通过浏览器调用文件时不起作用



我是PHP新手,刚刚遇到使用fopen()创建和打开文件的问题。下面是我的代码:

<?php
$new_file = fopen('file.txt', 'w') or die("Cannot create a file");
$text = <<<_END
Line 1
Line 2
Line 3
_END;
fwrite($new_file, $text) or die('Cannot write to the file');
fclose($new_file);

当我试图通过在浏览器中打开它来运行文件时,我看到下一条消息:"无法创建文件"。但是当我开始调试会话时,一切都正常工作。我怀疑有一些权限问题和XDebug使用根访问不像通常的解释器?

读写权限

chown -R www-data:www-data /var/www/dicrctoy 
chmod -R 775 /var/www/dicrctoy

我已经在我的本地环境中进行了测试,没有发现错误如果你使用MAC,你应该检查文件权限使用chmod修改权限命令

chmod 777是什么意思?可读、可写和可执行为文件或目录设置777权限意味着它将被所有用户可读、可写和可执行

要解决这个问题,首先我需要用下一个命令检查PHP用户:

<?php echo `whoami`; ?>

输出:

www-data

这是默认的PHP用户。接下来,我用下面的命令检查文件夹的所有者:

ls -dl /var/www/html/test

输出:

drwxrwxr-x 2 username username 4096 Jun 26 12:49

下面我给PHP用户设置了权限:

sudo chown -R www-data /var/www/html/test

再次检查所有者是否更改

ls -dl /var/www/html/test

现在输出

drwxrwxr-x 2 www-data username 4096 Jun 26 12:55

。现在我可以创建并写入文件了。

相关内容

  • 没有找到相关文章

最新更新