0

I am having trouble uploading a file from PHP to Centos 7.0 Apache Server

PHP CODE

  <html>
<head>
  <title>Upload your files</title>
</head>
<body>
  <form enctype="multipart/form-data" action="index.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="uploaded_file"></input><br />
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<?PHP
  if(!empty($_FILES['uploaded_file']))
  {
    $path = "/var/www/html/";
    $path = $path . basename( $_FILES['uploaded_file']['name']);
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
      echo "The file ".  basename( $_FILES['uploaded_file']['name']). 
      " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
?>

Please note that file_uploads is on in php.ini

and the folder "/var/www/html/" has permission 0777 and the owner of it is apache

I tried almost all solutions in stackoverflow,

chmod -R 0777 /var/www/html

chown apache /var/www/html

find /var/www/html/ -type f -print0 | xargs -0 chmod -v 777 

Still file upload fails, and got this error in HTTPD error_log

[Tue Mar 19 10:34:21.257969 2019] [:error] [pid 27446] [client 172.20.20.41:61798] PHP Warning:  move_uploaded_file(/var/www/html/Scan.pdf): failed to open stream: Permission denied in /var/www/html/index.php on line 23, referer: http://10.104.25.70/index.php
[Tue Mar 19 10:34:21.258095 2019] [:error] [pid 27446] [client 172.20.20.41:61798] PHP Warning:  move_uploaded_file(): Unable to move '/tmp/php64POiK' to '/var/www/html/Scan.pdf' in /var/www/html/index.php on line 23, referer: http://10.104.25.70/index.php

the output of

ls -l 

is

drwxrwxrwx. 3 apache root 34 Mar 18 13:24 html

the output of

stat html

is

  File: ‘html’
  Size: 34              Blocks: 0          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 67281951    Links: 3
Access: (0777/drwxrwxrwx)  Uid: (   48/  apache)   Gid: (    0/    root)
Context: system_u:object_r:httpd_sys_content_t:s0
Access: 2019-03-19 09:09:19.056277906 +0300
Modify: 2019-03-18 13:24:45.504174727 +0300
Change: 2019-03-19 10:37:18.901089085 +0300
 Birth: -
1
  • Just to be sure check permissions on the file you're trying to move, instead of the folder itself. Commented Mar 19, 2019 at 7:43

1 Answer 1

5

Selinux needs to be configured context

cd /var/www/html
mkdir upload
chown apache:apache upload
chcon -t httpd_sys_rw_content_t upload
ls -Z /var/www/html
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.