一个PHP文件没有执行,其他工作正常(使用php函数“mkdir”)

时间:2012-01-29 21:19:33

标签: php mkdir

最终编辑:已修复但尚未解决。不知道发生了什么,但我从头开始创建了一个新的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个文件夹,每个字母对应一个字母。

我觉得答案非常明显,但我常常发现我最难看到的明显错误。

4 个答案:

答案 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)

你应该做一些事情:

  1. 启用错误报告
  2. 测试mkdir来电的结果。
  3. 一旦你做了这两件事,我猜你会明白为什么事情不适合你:

    // 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)

很长一段时间我都被困在这里,也许这就是你的问题。如果您在SELinux上,则会有一个额外的权限层,称为“安全上下文”,您可以使用ls -alZ查看。使用chcon system_u:object_r:httpd_sys_content_t:s0 public_HTML

之类的东西

根据这个额外的层,不同目录中的相同文件可以工作或失败是有意义的。 HTH