【问题标题】:PHP Creating a file on the server via controllerPHP 通过控制器在服务器上创建文件
【发布时间】:2012-04-10 05:01:39
【问题描述】:

我有以下代码,但它似乎根本没有创建文件夹。

我应该使用is_dir 而不是file_exists

        $location = $_SERVER['DOCUMENT_ROOT'].'/_assets/quote/uploads/';

        $folderName = $this->quote->getCompanyDetails()->companyName;
        $folderName = str_replace(" ", "_", $folderName);
        $folderName = strtolower($folderName);

        if(!file_exists($folderName))
        {   
            mkdir($location.$folderName, 0777);

        }else{

【问题讨论】:

    标签: php codeigniter mkdir


    【解决方案1】:

    使用

    if (!file_exists($dir) && !is_dir($dir)) {
        mkdir($location.$folderName, 0777);
    }
    

    【讨论】:

    • 那是多余的。如果文件存在,mkdir 不会覆盖它。如果目录存在,is_dir 将返回 true。因此,您可以只使用其中之一。
    • @corbin 你推荐使用什么?
    • @JessMcKenzie 取决于您的最终目标是什么。您想删除一个文件并在其位置创建一个目录吗?如果您只想创建一个不存在的目录,并且您知道具有所需名称的文件永远不会存在,那么我会使用 is_dir。实际上,在这种情况下,它们在功能上都是等效的。如果一个文件可能实际存在并且具有所需的目录名称,这将很重要。
    • @cobin 我只是想创建一个空文件夹,然后上传到 else 语句中
    【解决方案2】:

    is_dir 函数仅检测定义的路径是否为文件夹。可能您没有足够的权限来创建文件夹。尝试使用

    <?php
    if (is_writable($dir)) {
    echo "Path is writable";
    }
    ?>
    

    检测你的路径是否真的是可写的。

    【讨论】:

      【解决方案3】:

      这似乎是权限问题。检查您在使用 mkdir 的目录中是否有写权限。

      也可以使用

      echo $location.$folderName ;
      

      检查它发生在正确的地方。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-27
        • 1970-01-01
        • 2015-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多