Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php chmod()不更改权限_Php_Permissions_File Permissions_Chmod_Writable - Fatal编程技术网

php chmod()不更改权限

php chmod()不更改权限,php,permissions,file-permissions,chmod,writable,Php,Permissions,File Permissions,Chmod,Writable,我的图片上传脚本有问题 我知道有数百个相同的问题,但我还没有找到一个适合我的 $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'; } 这总是返回文件“不可写” 我尝试将chmod设置为0777和-rwxrwx

我的图片上传脚本有问题

我知道有数百个相同的问题,但我还没有找到一个适合我的

$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';
}
这总是返回文件“不可写”


我尝试将
chmod
设置为
0777
-rwxrwx
。但结果总是一样的。有什么想法吗?

目录必须由调用脚本的用户拥有(通常是
www-data
apache
httpd
,如果您在apache/*NIX设置中运行脚本)。用户无法在其不拥有的目录上设置777权限

请参见chmod()上的注释:

当前用户是运行PHP的用户。可能不是 您用于正常shell或FTP访问的同一用户。模式可以是 仅由在大多数系统上拥有文件的用户更改


首先,通过在代码顶部添加两行来打开PHP错误报告,查看是否有来自chmod的错误:

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

确保您的Web服务器具有访问该目录的权限,我猜Web服务器没有权限

我已经遇到了相同的问题。您可以通过以下代码更改文件的权限:

<?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;
}
?>

我没有运行这段代码,但我认为它是可以的,它将帮助您。
告诉我你的问题是否解决了

我在使用chmod时遇到了类似的问题,尽管该文件由apache:apache(webserver用户)拥有。在我的例子中,SELinux妨碍了我,禁用它清楚地表明了这一点:

sudo set0

chmod也能起作用。现在,我们来弄清楚如何为这种情况创建SELinux异常。。。
(当然,不要忘记启用SELinux)

如果是十进制
777
则不正确。您应该始终使用
0
在此处检查。改进您的答案,使其更全面。这是针对我的具体情况的最佳答案,因为我为文件设置了正确的用户和组。同样关于服务器配置的主题,我还发现为我的Web服务器设置一个新的
umask
是最好的选择:omg非常感谢错误报告。我当时正在拼命安装Chrome Logger之类的东西,以获取php的错误报告。