开发者

Not able to open a file in php

开发者 https://www.devze.com 2022-12-26 18:09 出处:网络
The code chokes at fopen(): <?php ini_set(\'display_errors\',1); error_reporting(E_ALL); $fp = fopen(\"/path/to/file/some_file.txt\",\"a\") or die(\"can\'t open file\");

The code chokes at fopen():

<?php 
  ini_set('display_errors',1);
  error_reporting(E_ALL);
  $fp = fopen("/path/to/file/some_file.txt","a") or die("can't open file");
  fwrite($fp,"some text");
  fclose($fp);
?>

And the resulting web page says:

"Warning: fopen(/path/to/file/some_file.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/html/test.php on line 5 can't open f开发者_C百科ile"

I tried to play with the file permissions, but to no avail. I changed the user/group with chown apache:apache some_file.txt and changed permissions with chmod 755 some_file.txt. Here is the relevant result of ls -l /path/to/file/:

-rwxr-xr-x 1 apache apache 0 Apr 12 04:16 some_file.txt


Don't forget that even if Apache's been granted permissions to read the file, you also have to grant Apache access to ALL of the parent directories.

/path/to/file/
/path/to
/path

all need to grant Apache at least 'Read' permission.


You're sure that apache is the user actually running your PHP?`

And: make sure that the apache user can reach some_file.txt in the file system and that it isn't blocked by some access restriction on directories above some_file.txt.


Before you go to fix an error, it would be nice to know, which error to fix.
Add these lines at the top of your script and then try again

ini_set('display_errors',1);
error_reporting(E_ALL);

PHP will tell you, what is the problem


"a" means you want to append, the same permissions as for write are needed.

You need at least 666 permissions to write by everybody. Or change file owner to server group (www-data on Ubuntu). And set the required permission.

Here is Permission calculator

If this does not helps, check the safe_mode too.

0

精彩评论

暂无评论...
验证码 换一张
取 消