Reputation: 221
I was trying fopen
for my project. Which running on Ubuntu with CodeIgniter PHP framework. The result was like this:
A PHP Error was encountered
Severity: Warning
Message: fopen(testFile.txt): failed to open stream: Permission denied
Filename: controllers/home.php
Line Number: 10
can't open file
By the way, here are my code on Controller:
public function create_file(){
$ourFileName = 'testFile.txt';
$ourFileHandle = fopen($ourFileName, 'r') or die ("can't open file");
fclose($ourFileHandle);
}
I looked at that code, and I thought that there is should be a path where I open the file, right? If yes, where should I put the path? Because, I followed this code from this tutorial: http://www.tizag.com/phpT/filecreate.php.
One thing that make me confuse is, there is no file testFile.txt
and I wanna create it, but how to give the permission to create it. Because terminal will say No such file or directory for the file
. What should I do?
I've also tried to run the chmod
on www
directory. But, it still didn't work.
Hope anyone help me to handle this problem. Thank you...
Upvotes: 3
Views: 22524
Reputation: 541
I think you need to change the permission of the file you are trying to open. Also you didn't mentioned whether you want to read or write to the file. In general you can give permissions to the file as below:
chmod 777 testFile.txt
Or In case you want full www directory and its contents to have all permissions recursively, try this:
sudo chmod -R 777 www/
After doing the above you should be able to open the file, as below code does:
$handle = fopen("testFile.txt", "r"); // for reading
or
$handle = fopen("testFile.txt", "w"); // for writing
Change your function as below:
public function create_file(){
$ourFileName = 'testFile.txt';
$ourFileHandle = fopen($ourFileName, "w") or die ("can't open file");
fclose($ourFileHandle);
}
Upvotes: -1
Reputation: 144
There are 2 ways :
1.) chmod www directory to 777 by this command "sudo chmod -R 777 /var/www". This will give permissions recursively to all sub-folders and files.
2.) If you create any new folders (or projects in www directory) in future after the 1st step , then follow above :
=> Right click on your current project folder
=> Scroll to Properties
=> Scroll to permissions
=> Add permission for "Create and Delete files" for owner, group, others.
=> Now click on "Change permission for enclosed files"
=> Give appropriate permissions for files and folders there.
All done. Now fopen() should not give that warning.
Upvotes: 12
Reputation: 3870
To create a file with terminal:
sudo touch testFile.txt
To create a file with php if not exists:
fopen('testFile.txt', 'w');
Note: If you are not the owner that folder you can not write.
Be sure to parent folder / directory has at least 755 chmod.
Upvotes: 0