在 Codeigniter 中使用 mkdir 函数创建目录时出错

Error creating directory using mkdir function in Codeigniter

我正在尝试在 Codeigniter 安装中使用 php 的 mkdir 函数递归创建目录。我的代码如下所示:

mkdir('docs/client/bills/payd', 0777, true)

docs 目录已存在于我的站点根目录中,正在使用 0755 权限创建 client 目录,bills 目录正在使用 permission 1341(奇怪!)创建,而最后一个目录 payd 从未创建。
我尝试将 mkdir 参数列表中的权限更改为 0、755 等……但没有任何改变。我还尝试将 umask 设置为 0、0777... 但什么也没有。

umask(0777);
mkdir('docs/client/bills/payd', 0777, true)

谁能告诉我我做错了什么?上面的代码是从 Codeigniter 常规控制器调用的。

使用它来指定工作目录,它可能会混淆目录所在的位置。

mkdir( getcwd().'docs/client/bills/payd', 0777, true);

getcwd 是您的 codeigniter 的工作目录。可以在PHP指南中搜索getcwd()函数更清楚

这应该有效。

编辑

为了更清楚,这将 return 以下内容:

C:\xampp\htdocs\YOUR_ROOT_DIRECTORY\docs\client\bills\payd

再次编辑

虽然再次阅读后,这只会创建 payd 并假设 docs\client\bills 已经创建。您可以使用 mkdir 或使用文件资源管理器创建客户和账单。但是还有其他 PHP 方法,如果需要我可以提供帮助。

祝你好运

试试

if ( ! is_dir( FCPATH.'docs/client/bills/payd' )//FCPATH is absolute path to the project directory
{
    mkdir( FCPATH.'docs/client/bills/payd', 0777, true );//although 0755 is just fine and recomended for uploading and reading
}

我也遇到了 PHP mkdir 这个奇怪的“1341”权限错误,与 CodeIgniter 无关,这是一个纯粹的 PHP 问题!

经过多次试验,我唯一能让它工作的方法是在路径末尾添加一个斜杠,并将递归标志设置为 'true'。 (尽管 PHP 文档没有显示最后的斜杠,而且我只创建了一个目录。)

$existing_path = '/these/directories/already/exist/';
mkdir( $existing_path . 'new-directory/', 0755, true);