最终编辑:已修复但尚未解决。不知道发生了什么,但我从头开始创建了一个新的php文件。很奇怪。
编辑:我在所有相关文件夹上设置了777
权限
编辑2:在字符串中添加引号
修改3:在/
letter
编辑4:
<?php mkdir("letter/testfolder",0777); ?>
完美运行并在testfolder
内创建了文件夹letter
。
我不确定我在这里做错了什么。我有很多可以自己运行的php文件,但是当我尝试执行这个特定的文件时,唯一使用mkdir的文件,它不起作用,而是加载index.php文件。我认为这是由于编码错误?
代码是
<?php
$letters = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
foreach($letters as $letter) {
mkdir("letter/$letter",0755);
echo $letter;
echo " created";
}
?>
这个想法是在文件夹letter
内创建26个文件夹,每个字母对应一个字母。
我觉得答案非常明显,但我常常发现我最难看到的明显错误。
答案 0 :(得分:2)
mkdir("/letter/$letter",0755);
尝试在位于文件系统根目录的/ letter /文件夹中创建文件夹。你有吗?如果您尝试使用当前工作目录的子文件夹,请使用
mkdir("letter/$letter",0755);
并确保文件夹letter
已存在。
ps:The php file is at the root of the disk and so is the folder letter
- 非常奇怪的配置。你肯定在谈论磁盘的根目录而不是网站的根目录吗?启用php中所有错误的输出。
如果要在站点的根目录下创建文件夹,请使用
mkdir($_SERVER['DOCUMENT_ROOT'] . "/letter/$letter",0755);
但只有在能够运行脚本时才会出现这种情况。您关于it loads the index.php
的短语意味着您的服务器的httpd.conf中有其他内容(假设您的服务器是Apache),或者.htaccess将所有请求重定向到index.php文件。如果您在网站上使用任何CMS,那么就可以。
答案 1 :(得分:1)
您需要在路径前添加.
。
<?php
error_reporting(E_ALL); //<<Always a good idea
foreach(range('a','z') as $letter){
mkdir("./letter/$letter",0755);
echo $letter.' created';
}
?>
答案 2 :(得分:1)
你应该做一些事情:
mkdir
来电的结果。一旦你做了这两件事,我猜你会明白为什么事情不适合你:
// Useful in debug / development environments (disable in production)
error_reporting(E_ALL);
foreach ($letters as $letter)
{
if(mkdir("/letter/$letter",0755))
echo "$letter created\n";
else
echo "Failed to create $letter!\n";
}
答案 3 :(得分:0)
ls -alZ
查看。使用chcon system_u:object_r:httpd_sys_content_t:s0 public_HTML
之类的东西
根据这个额外的层,不同目录中的相同文件可以工作或失败是有意义的。 HTH