在CodeIgniter中使用mkdir函数创建目录时出现错误

3

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

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

在我的站点根目录下已经存在 docs 目录,client 目录正在使用 0755 权限创建,bills 目录正在使用 1341 权限(奇怪!)创建,最后一个目录payd从未被创建。尝试在 mkdir 参数列表中更改权限为 0、755 等,但没有任何变化。我还尝试设置 umask 为 0、0777,但仍然没有作用。
umask(0777);
mkdir('docs/client/bills/payd', 0777, true)

有人能否告诉我我做错了什么?上面的代码是从一个Codeigniter常规控制器中调用的。


尝试了Lorenzo Magno和Tpojka的两个答案后,我意识到cPanel使用相同的路径并出现相同的错误。然后我发现昨天创建目录的last_modified时间与我创建目录时的时间相同... cPanel正在恢复我的错误版本的目录创建。我只是更改了客户端名称,创建就可以正常工作了。问题的起因是我在第一次尝试中没有将递归参数设置为true,当我这样做时,cPanel继续重新创建/恢复第一个错误状态。 - Nowdeen
总之,我的第一个代码版本可以正常工作,Lorenzo和Tpojka的回答也是如此...我选择了Lorenzo的答案作为正确答案,只是因为他先回答了。感谢这两位朋友。 - Nowdeen
3个回答

1
尝试使用。
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
}

0

我在使用PHP的mkdir函数时遇到了一个奇怪的"1341"权限错误,与CodeIgniter无关,这是一个纯粹的PHP问题!

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

即:

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

0
使用此选项指定工作目录,否则程序可能会混淆目录的位置。
mkdir( getcwd().'docs/client/bills/payd', 0777, true);

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

这应该可以工作。

编辑

为了更清晰,它将返回以下内容:

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

再次编辑

再次阅读后,我发现这只会创建 payd 并假设 docs\client\bills 已经被创建。你可以使用 mkdir 或文件浏览器来创建 client 和 bills。但是还有其他 PHP 的方法,如果需要我可以提供帮助。

祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接