php chmod() not changing permissions

纵饮孤独 提交于 2019-12-01 05:17:43

The directory must be owned by the user invoking the script (typically www-data, apache or httpd if you're running the script in a apache/*NIX setup). A user can't set 777 permissions on directories it doesn't own.

See the note on the chmod() manual:

The current user is the user under which PHP runs. It is probably not the same user you use for normal shell or FTP access. The mode can be changed only by user who owns the file on most systems.

First , open PHP error_report by adding two line on top of your code, see if there is a error coming from chmod:

ini_set('display_errors', true);
error_reporting(E_ALL);

Make sure your WebServer has the permission to that directory, my guess is the WebServer don't have permission.

I already had the same problem you can change the file's permission by this code :

<?php
$ftp_details['ftp_user_name'] = 'your ftp username';
$ftp_details['ftp_user_pass'] = 'your ftp password';
$ftp_details['ftp_root'] = '/public_html/';
$ftp_details['ftp_server'] = 'ftp' . $_SERVER['HTTP_HOST'];
function ftp_chmod($path, $mod, $ftp_details) {
  extract($ftp_details);
  $conn_id = ftp_connect($ftp_server);
  $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to chmod $path directory
  if (ftp_site($conn_id, 'CHMOD ' . $mod . ' ' . $ftp_root . $path) !== false) {
    $success = true;
  }
  else {
    $success = false;
  }

  ftp_close($conn_id);
  return $success;
}
?>

I didn't run this code but I think it's Ok and it will help you. tell me if your problems resolved.

I was having similar troubles using chmod, although the file was owned by apache:apache (webserver user). In my case SELinux was getting in the way, disabling it made this clear:

sudo setenforce 0

And the chmod works. Now on to figuring out how to make a SELinux exception for this case... (and don't forget to enable SELinux, of course)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!