PHP CHMOD()不改变权限(php chmod() not changing permissi

2019-07-20 19:43发布

我有一个图片上传脚本问题。

我知道有数百个相同的问题,但我还没有找到一个,这将是为我工作。

$upload_dir = "images/postcards/";
chmod($upload_dir, 777);
if (is_writable($upload_dir)) {
    echo 'The file is writable';
} else {
    echo 'The file is not writable';
}

这总是返回该文件是“不可写”

我试着设置chmod0777-rwxrwxrwx 。 但结果总是相同的。 有任何想法吗?

Answer 1:

该目录必须由用户调用脚本(通常所拥有www-dataapache或者httpd ,如果你正在运行在阿帕奇/ * NIX安装脚本)。 用户不能在不属于自己的目录上设置777个权限。

查看使用chmod()的说明手册 :

当前用户是执行PHP的用户。 这可能不是你使用通常的shell或者FTP访问相同的用户。 该模式只能通过用户谁拥有大多数系统上的文件进行更改。



Answer 2:

首先,通过增加对你的代码的前两位线error_report开放PHP,看看是否有来自搭配chmod来一个错误:

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

请确保你的服务器有权限到该目录,我的猜测是Web服务器没有权限。



Answer 3:

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.



Answer 4:

我在使用chmod类似的烦恼,但该文件是由拥有阿帕奇:阿帕奇(Web服务器的用户)。 在我的情况的SELinux是凑了过来,禁用它使这个明确的:

须藤setenforce 0

而CHMOD工作。 现在就来搞清楚如何使一个SELinux的例外,对于这种情况......(不要忘记启用SELinux的,当然)



文章来源: php chmod() not changing permissions