我有一个图片上传脚本问题。
我知道有数百个相同的问题,但我还没有找到一个,这将是为我工作。
$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
和-rwxrwxrwx
。 但结果总是相同的。 有任何想法吗?
该目录必须由用户调用脚本(通常所拥有www-data
, apache
或者httpd
,如果你正在运行在阿帕奇/ * NIX安装脚本)。 用户不能在不属于自己的目录上设置777个权限。
查看使用chmod()的说明手册 :
当前用户是执行PHP的用户。 这可能不是你使用通常的shell或者FTP访问相同的用户。 该模式只能通过用户谁拥有大多数系统上的文件进行更改。
首先,通过增加对你的代码的前两位线error_report开放PHP,看看是否有来自搭配chmod来一个错误:
ini_set('display_errors', true);
error_reporting(E_ALL);
请确保你的服务器有权限到该目录,我的猜测是Web服务器没有权限。
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.
我在使用chmod类似的烦恼,但该文件是由拥有阿帕奇:阿帕奇(Web服务器的用户)。 在我的情况的SELinux是凑了过来,禁用它使这个明确的:
须藤setenforce 0
而CHMOD工作。 现在就来搞清楚如何使一个SELinux的例外,对于这种情况......(不要忘记启用SELinux的,当然)