【问题标题】:Uploads directory is not writable上传目录不可写
【发布时间】:2013-08-21 16:51:04
【问题描述】:

我最近刚刚将我的服务器移到了一个新主机上,我现在遇到了我的 PHP 上传表单的问题。无法上传文件。我得到的错误是:

警告: move_uploaded_file(/public_html/site/abc/uploads/APLICATION.doc) [function.move-uploaded-file]:打开流失败:没有这样的文件或 第 389 行 /long/path/apply.php 中的目录

警告:move_uploaded_file() [function.move-uploaded-file]:无法 将“/tmp/phpDAz5QP”移动到 '/public_html/site/uploads/1908131216_APPLICATION.doc' 在 /long/path/apply.php 在第 389 行问题:无法将文件移动到 目标目录不可写 /tmp/phpDAz5QP - /public_html/site/abc/uploads/1908131216__APPLICATION.doc

我有这个小测试,看看目录是否可写,不是。

$upload_dir = "/public_html/site/$companyfolder/uploads";
if(!is_writable($upload_dir)) {
    $writable = 'not writable';
} else {
    $writable = 'writable';
}
echo $writable;

我将上传文件夹设置为 777 以获得权​​限。关于为什么目录不可写的任何想法?

【问题讨论】:

  • 您可能需要从控制面板更改文件夹权限。有时通过 FTP 更改文件夹权限无效。你必须去 cPanel 做。
  • 你的路径不对,不应该是/home/youruser/public_html/site/$companyfolder/uploads吗?或者您是否真的在 HD / 的根目录下创建了一个名为 public_html 的文件夹
  • 你确定你的路径是正确的吗? PHP 采用绝对路径,因此您的“根”不是您的网站根目录,而是您的文件系统根目录。编辑:哦抱歉太晚了
  • 还取决于服务器,可能会发生其他事情,等等,这会阻止写入 777 目录。如果您需要 777,请咨询您的虚拟主机(共享主机,suphp 之类的东西可以让 php 以您的用户身份运行,因此不需要全局可写,这是一个安全风险)
  • @Fred-ii- 这是他的实际文件夹,看起来不像是“/public_html”,这看起来很奇怪。

标签: php


【解决方案1】:

从您上面的代码看来,您的上传路径不正确:

$upload_dir = "/public_html/site/$companyfolder/uploads";

应该是这样的:

$upload_dir = "/home/youruser/public_html/site/{$companyfolder}/uploads";

目录需要是绝对路径或相对路径。当它是相对的时,它需要相对于被调用的 PHP 所在的位置。

因此,您可以将其用作 ./site/{$companyfolder}/uploads,例如,假设您使用的 php 代码位于 /home/youruser/public_html

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多