mkdir()拒绝权限

时间:2011-02-10 20:05:46

标签: php error-handling mkdir

尝试在服务器上调用mkdir()时出现以下错误...

  

警告:mkdir()[function.mkdir]:   许可被拒绝   /home/server/public_html/wp-content/themes/mytheme/catimages/cat-images.php   在第373行

功能如下。它试图在网站的“wp-content / uploads文件夹”下创建一个文件夹。我已经验证PHP版本是5.2.15并且主题文件夹中的文件是可写的,但这并不一定意味着我认为uploads文件夹是可写的。

如何确定uploads文件夹是否可写?

protected function category_images_base_dir()
{
    // Where should the dir be? Get the base WP uploads dir
    $wp_upload_dir = wp_upload_dir();
    $base_dir = $wp_upload_dir[ 'basedir' ];
    // Append our subdir
    $dir = $base_dir . '/cat-images';
    // Does the dir exist? (If not, then make it)
    if ( ! file_exists( $dir ) ) {
        mkdir( $dir ); //THIS IS LINE 373
    }
    // Now return it
    return $dir;
}

2 个答案:

答案 0 :(得分:7)

is_writable()可能是您正在寻找的功能。

http://cz.php.net/manual/en/function.is-writable.php说:

  

如果文件名存在且可写,则返回TRUE。 filename参数可以是目录名,允许您检查目录是否可写。

此外,下一行直接与此相关:

  

请记住,PHP可能正在以Web服务器运行的用户ID(通常是“nobody”)访问该文件。

换句话说,检查您的目录是否可以通过Web服务器的用户ID写入 - 这可能与您的用户ID不同!设置适当的权限 - 例如将文件夹的用户组设置为服务器用户的用户组,并将读,写和执行授予组。 (chgrp somegroup uploads; chmod g+r uploads; chmod g+w uploads; chmod g+x uploads

答案 1 :(得分:1)

确保父文件夹可写入Web服务器运行的进程。

编辑:哎呀,过早回复。您的主机是否为您提供了GUI文件浏览器?