Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

file_put_contents - failed to open stream: Permission denied

I am trying to write a query to a file for debugging. The file is in database/execute.php. The file I want to write to is database/queries.php.

I am trying to use file_put_contents('queries.txt', $query)

But I am getting

file_put_contents(queries.txt) [function.file-put-contents]: failed to open stream: Permission denied

I have the queries.txt file chmod'd to 777, what could the issue be?

like image 718
Hailwood Avatar asked Feb 07 '11 03:02

Hailwood


2 Answers

Try adjusting the directory permissions.

from a terminal, run chmod 777 database (from the directory that contains the database folder)

apache and nobody will have access to this directory if it is chmodd'ed correctly.

The other thing to do is echo "getcwd()". This will show you the current directory, and if this isn't '/something.../database/' then you'll need to change 'query.txt' to the full path for your server.

like image 100
Jason Avatar answered Nov 02 '22 08:11

Jason


You can make Apache (www-data), the owner of the folder:

sudo chown -R www-data:www-data /var/www

that should make file_put_contents work now. But for more security you better also set the permissions like below:

find /var/www -type d -print0 | xargs -0 chmod 0755 # folder
find /var/www -type f -print0 | xargs -0 chmod 0644 # files
  • change /var/www to the root folder of your php files
like image 31
azerafati Avatar answered Nov 02 '22 10:11

azerafati