我试图在Codeigniter安装中使用php的mkdir函数递归创建一个目录。我的代码如下所示:
mkdir('docs/client/bills/payd', 0777, true)
docs 目录已存在于我的网站根目录中,客户端目录正在创建时获得0755权限,帐单目录正在出现使用权限创建1341 (很奇怪!),并且永远不会创建最后一个目录付费。
我试图将mkdir参数列表中的权限更改为0,755等等......并且没有任何更改。我也尝试将umask设置为0,0777 ......什么都没有。
umask(0777);
mkdir('docs/client/bills/payd', 0777, true)
任何人都可以说我做错了什么?上面的代码是从Codeigniter常规控制器调用的。
答案 0 :(得分: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
}
答案 1 :(得分:0)
使用它来指定工作目录,可能会混淆目录所在的位置。
mkdir( getcwd().'docs/client/bills/payd', 0777, true);
getcwd是codeigniter的工作目录。您可以在PHP指南中搜索getcwd()函数,以使其更清晰。
这应该有用。
修改强>
为了更清楚,这将返回以下内容:
C:\xampp\htdocs\YOUR_ROOT_DIRECTORY\docs\client\bills\payd
再次编辑
虽然在再次阅读之后,这只会创建付费并假设已经创建了docs \ client \ bills。您可以使用mkdir或使用文件资源管理器创建客户端和账单。但是还有其他PHP方式,如果需要我可以提供帮助。
Goodluck meyt
答案 2 :(得分:0)
我还遇到了PHP mkdir
这个奇怪的“ 1341”权限错误,与CodeIgniter无关,这是一个纯PHP的问题!
经过大量实验,我唯一能使它起作用的方法是在路径的末尾包含一个斜杠,并将递归标志设置为“ true”。 (即使PHP文档未显示最后的斜杠,而我仅创建了一个目录。)
即
$existing_path = '/these/directories/already/exist/';
mkdir( $existing_path . 'new-directory/', 0755, true);