PHP permissions denied failed to open stream - php

I have this code
<?php
$handle = fopen('names.rtf','w');
fwrite($handle, 'Alex');
?>
Warning: fopen(names.rtf): failed to open stream: Permission denied in
/Applications/XAMPP/xamppfiles/htdocs/file.php on line 3
And when I run it in comes up with that error. I've set my permissions on the folder to read & write for everyone. I'm not sure why else it would deny it.
Im using the latest Mac OS

There is possible, the issue is that your webserver or PHP instance is not running under the same user, you can check this using the get_current_user() function.
You can either configure apache to run with your privileges or give the folder more permissions, like 0777.but 0644 is enough for reading file. try to give permission according to it's usage.
Another thing, are you sure $outFile maps to an absolute path? Try doing:
var_dump(is_file("names.rtf"));

Related

Solving fopen() - permission denied on remote server without 777

I find it hard to believe that this question doesn't have an answer here, but I've searched and searched, and I can't find one.
I'm using fopen() on a remote server, and I only have FTP access - nothing else.
When I try to create or open a file for write access, I'm hit with the following error:
Warning: fopen(entries/newsletter.csv): failed to open stream: Permission denied in
/var/www/sites/xxx/public_html/index.php on line 24
Error: Can't open file. Your entry was not saved.
I've tried changing the file permissions to 777 and opening the existing file, and it works! But that cannot be a recommended solution, as 777 is so insecure.
Is there any way I can resolve this over FTP without resorting to 777?
Can you not change the parameters on the open to try to simply open in Read Only mode? PHP Manual for fopen() options.
fopen("csv/newsletter.csv", "r");
This uses the least permissions, but you do need to have read access. Of course, you cannot write to the file. Also, 777 includes executable bit, so you might just want 666.
You could also try connecting via the FTP as a user, and ensure that users permission to the file is rw (6) and then others, do not need that setting so they could be read only.
Optionally through your FTP interface, maybe chmod() the file to be read/write before opening, then chmod read only after.

PHP File Uploading Issues

I'm trying to implement script that will allow a file to be uploaded, and then moved to a designated directory. This is running on a Windows server & IIS. I'm having 2 issues in doing so.
First, I get an error when trying to move the file.
Warning: move_uploaded_file(reports/ff.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in C:\inetpub\wwwroot\betterinsight\betterinsight\upload_file.php on line 29
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Windows\Temp\php1EAB.tmp' to 'reports/ff.jpg' in C:\inetpub\wwwroot\betterinsight\betterinsight\upload_file.php on line 29
Stored in: reports/ff.jpg
When searching, almost everything says it's a permission problem. I have added full rights (will pare down later) to the user: IIS_IUSRS. Even did it to the parent directory as one site recommended.
Second: As a possible solution to the above issue, I tried changing the directory in which files are saved. But the files are still uploaded into C:\windows\temp.
I've run phpinfo, and it says that uploads should be in (as defined by upload_tmp_dir):
Again, this is on a Windows Server 2008. Thanks.
Permission denied
You need to set the folder permissions to 777 or enable read write to the folder. I think the permissions are messing...
OK, the answer was simple. I was adding permissions for user: IIS_USRS, when it should have been just user: USRS.

Using PHP move_uploaded_file function permission denied

I've been stuck on this code for days as I am hitting this error when I upload a file to the server. Its a windows server running on Apache
Tried various solutions but still receiving the error. I tried changing full permissions to everyone on that server.
I changed the default PHP upload tmp file to inside my application yet I am still having this error.
Warning: move_uploaded_file(C:\My_Workspace\ojs2002) [function.move-uploaded-file]: failed to open stream: Permission denied in C:\My_Workspace\ojs\admin\include\fileupload.php on line 78
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\My_Workspace\ojs\tmp\phpCB78.tmp' to 'C:\My_Workspace\ojs2002' in C:\My_Workspace\ojs\admin\include\fileupload.php on line 78
// copy the file, making the destination directory if necessary
$filedir = 'C:/My_Workspace/ojs2002/'.basename($_FILES['articlefile']['name']);
chmod($_FILES["articlefile"]["tmp_name"], 0777);
chmod($filedir, 0777 );
move_uploaded_file($_FILES["articlefile"]["tmp_name"],$filedir);
The code would work fine on Linux servers but not on Windows.
Any help would be very much appreciated. Thank You.
I decided to switch from:
move_uploaded_file($uploaded_file, $file_path);
to
file_put_contents($file_path, file_get_contents($uploaded_file));
#unlink($uploaded_file);
The unlink might fail but I'm not too worried about that.
chmod won't work on Windows, as it uses a different type of permission system. Make sure the user Apache runs as has full write access to the folder you're trying to move the files to (right click and click on sharing or permissions depending on the version of windows)

FTP in PHP not copy index.php file

I have a PHP script to copy all files in a directory i have change my server now its not copying index.php file all other files copy successfully and throw bellow warnings.
Warning: ftp_get(tmp/readme.txt): failed to open stream: Permission denied in /var/www/vhosts/Site.com/httpdocs/includes/ftp.class.php on line 123
Warning: ftp_get(): Error opening tmp/readme.txt in /var/www/vhosts/Site.com/httpdocs/includes/ftp.class.php on line 123
Warning: fopen(tmp/readme.txt): failed to open stream: Permission denied in /var/www/vhosts/Site.com/httpdocs/includes/clone.php on line 196
Seems like a permission issue on the new server. Double check the server directory you're accessing to make sure, you and apache have the appropriate permissions.
Like the error message says: Permission denied, in other words your script does not have permission to access the file tmp/readme.txt. Check that the user your PHP script is using has read access to the file/folder. The way to check that depends on what your server setup is so can't give more unless you provide more info about what your server is running.
Welcome to the unix world. It is a permission problem. If you have rights, you can fix it with the command chmod in the server.
$ ssh username#server
$ chmod PERMISSIONS /path/to/filr
check the man page of chmod to understand the permissions. probably you do something like this : +w
It seems this permission issue, not in the new server but in the old server.
Please check owner:group of the index.php file in old server, so that your script can access and manipulate the origin file.
One more thing. Did you run the ftp transfer script, in the browser or in the command line?
This is very important, because one can run the script with APACHE user (www-data) and the other method run the script with your system user.

php file manipulation functions fails on my localhost saying permission denied

im running on windows xp and i am an administrator, im using the latest xampp bundle available from their site and i receive these kinds of errors when i use file manipulation functions on php...
Warning: chmod() [function.chmod]: Permission denied in...
Warning: opendir(/feeds) [function.opendir]: failed to open dir: Permission denied in
do i need to set any environment variables for apache before i can use these functions?
but i think the problem lies only on my folder access permissions, but if so, how do i set a folder's accessibility properties on windows?
Does your php worker process have the necessary permissions?
Make sure whatever user the process is running as has proper permissions for the directory it is puking on.
right click on the folder, permissions...
it appears that my script referred to an inexistent directory as i just specified $dir='/feeds';it works fine on my machine in our office but i wonder why with the same configurations here on my pc at home it doesnt
as reference for other people who might have the same problem in the future my answer would be
check and make sure you are pointing your script to the right file :)
You can try setting the umask as well before the chmod like so;
$old_mask = umask(0);
chmod('/path/to/file', 0755);
umask($old_mask);
More information on umask can be found at PHP's Manual

Categories