8

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

警告:mkdir() [function.mkdir]: Permission denied in /home/server/public_html/wp-content/themes/mytheme/catimages/cat-images.php on line 373

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

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

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;
}
4

2 回答 2

7

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

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

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

此外,直接下一行在这里是相关的:

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

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

于 2011-02-10T20:07:57.073 回答
1

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

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

于 2011-02-10T20:06:42.133 回答