I keep getting this error when trying to configure the upload directory with Apache 2.2 and PHP 5.3 on CentOS.
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
Directory /var/www/html/mysite/tmp_file_upload/> Options -Indexes AllowOverride None Order allow,deny Allow from all </Directory> <Directory /var/www/html/mysite/images/> Options -Indexes </Directory>
CentOS directory permissions:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
No matter what I do, I keep getting this error from PHP when I upload the file:
Warning: move_uploaded_file(images/robot.jpg): failed to open stream: Permission denied in /var/www/html/mysite/process.php on line 78
Warning: move_uploaded_file(): Unable to move '/tmp/phpsKD2Qm' to 'images/robot.jpg' in /var/www/html/mysite/process.php on line 78
As you can see, it never did take the configuration from the php.ini file regarding the upload file.
What am I doing wrong here?
This is because
tmp_file_uploadare only writable by
rootuser. For upload to work we need to make the owner of those folders same as httpd process owner OR make them globally writable (bad practice).
$ps aux | grep httpd. The first column will be the owner typically it will be
Change the owner of
tmp_file_uploadto be become
nobodyor whatever the owner you found in step 1.
tmp_file_uploadnow to be writable by the owner, if needed [Seems you already have this in place]. Mentioned in @Dmitry Teplyakov answer.
For more details why this behavior happend, check the manual http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir , note that it also talking about