【问题标题】:Creating a folder in php apache在 php apache 中创建一个文件夹
【发布时间】:2013-12-22 05:09:45
【问题描述】:

这是我创建名为 images 的文件夹的代码

$path="".Yii::app()->request->baseUrl."/users/".Yii::app()->session["id"]."/images";
        if(!file_exists($path))
        {
            mkdir($path,0777,true);
            echo($path);
        }

但我遇到的错误是

mkdir(): Permission denied (/var/www/yiicapp/protected/models/Statement.php:123)

我以“bhawin”身份登录,但它正在成为所有者www-data

【问题讨论】:

  • 因为你没有权限在/images写任何东西

标签: php apache ubuntu yii mkdir


【解决方案1】:

您无权写入给定文件夹,PHP 无法更改它。您必须使用具有权限的用户使用 SSH 或 FTP,并将权限更改为 777。

【讨论】:

  • www-data 是服务器用户,他应该是文件的所有者或至少拥有文件夹的 777 权限。
  • 如果我在 httpd.conf 中将其更改为我的名字会发生什么
  • @BhawinParkeria 你不应该那样做。服务器应该有单独的用户。
  • 好的,但是当我尝试使用 php 的 mkdir 时,为什么它给出的权限被拒绝,我必须将自己添加到 www-data 组吗?
【解决方案2】:

Yii::app()->request->baseUrl 是域路径 URL,例如 http://example.com/yourfolderpath,而不是您可以使用文件夹的 相对路径,例如 /var/www/.....

【讨论】:

    【解决方案3】:

    http://pt1.php.net/chmod

    您无权创建新文件夹,因此 chmod 可能是您所需要的 :)

    【讨论】:

      【解决方案4】:

      Yii::app()->request->baseUrl 是 URL,而不是本地文件系统路径。您不能在 URL 中创建目录。

      要使用文件系统,您需要从 Yii::app()->basePath 开始,尽管将用户提供的内容放在 Web 可访问的位置可能并不明智(如果知道正确的 URL,每个人都可以查看该内容)。根据内容是什么,正确的方法可能是将其完全放在 Web 服务器文档根目录之外。

      【讨论】:

        猜你喜欢
        • 2010-10-17
        • 2019-02-21
        • 1970-01-01
        • 2012-07-04
        • 2022-01-11
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多