Kuba Rádl
Kuba Rádl

Reputation: 3

Fedora PHP "failed to open stream: Permission denied"

So I've got Apache on web server running Fedora. I'm trying to write into the text file.

if(!empty($_POST['versionWrite'])){
$file = fopen(APP_DIR."/resources/version.txt", "w");
fwrite($file, $_POST['versionWrite'].PHP_EOL);
fclose($file);
}

And when I execute the code, I get this:

Warning: fopen(/var/www/spumprnagle/resources/version.txt): failed to open stream: Permission denied in /var/www/spumprnagle/head.php on line 28

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/spumprnagle/head.php on line 29

Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/spumprnagle/head.php on line 30

This happens in every script working with files. And I have no idea what shall I do to grant Apache permissions to edit files.

Thanks for your time :).

Upvotes: 0

Views: 1426

Answers (3)

Sam
Sam

Reputation: 1559

OK, I add this answer for who are searching for answer on Fedora. I changed file permissions to 777 and file ownership to apache:apache but it keeps throwing the same error. finally I found that in some versions of Fedora SElinux prevents Httpd from writing files. The solution is to disable SElinux as follow:

 vim /etc/selinux/config 

then edit the file as follow:

 SELINUX=disabled 

Then Restart. It worked for me. Happy coding.

Upvotes: 2

prolific
prolific

Reputation: 775

Problem: The apache user doesn't have the permission to write file.

Solution:

chown -R apache:apache path/to/directory

where apache is the default user for fedora and path/to/directory is the path of the directory containing the files with you want to write.

If you want to give the permission to a single file then omit -R

Upvotes: 0

Matthew Poer
Matthew Poer

Reputation: 1682

I would start by checking permissions on the file /var/www/spumprnagle/resources/version.txt to ensure that it's writeable by the web user. Since you tagged fedora here, I believe that's usually the apache user, so try chown apache:apache /var/www/spumprnagle/resources/version.txt.

If you're unsure of permission setting you can always temporarily set 777, e.g. chmod 777 /var/www/spumprnagle/resources/version.txt. If that resolves the issue, you can adjust the permissions down to something more reasonable (644).

Upvotes: 0

Related Questions