PHP有缺陷

PHP有缺陷,php,Php,奇怪的行为,本质上: (文件夹的名称取决于日期-目的是网站的点击计数器,按日期细分) 嗯:在互联网的服务器上,一切都很好。 但当我在本地尝试使用Easy PHP服务器模拟器时,会发生以下情况: (a) 第一次,没问题。该文件夹不存在,已创建 (b) 随后,例如页面刷新,程序流再次进入IF(!!!)中,生成类似的错误(在mkdir的第行):“警告:mkdir():在[…]中没有这样的文件或目录” 目录$folder的所有父部分都存在 谢谢 .尝试使用递归目录创建函数: function mkdir

奇怪的行为,本质上: (文件夹的名称取决于日期-目的是网站的点击计数器,按日期细分)

嗯:在互联网的服务器上,一切都很好。 但当我在本地尝试使用Easy PHP服务器模拟器时,会发生以下情况:

(a) 第一次,没问题。该文件夹不存在,已创建

(b) 随后,例如页面刷新,程序流再次进入IF(!!!)中,生成类似的错误(在mkdir的第行):“警告:mkdir():在[…]中没有这样的文件或目录”

目录$folder的所有父部分都存在

谢谢


.

尝试使用递归目录创建函数:

function mkdir_r($dirName, $rights = 0777)
    {
        $dirs = explode(DIRECTORY_SEPARATOR , $dirName);
        $dir = '';
        if (strpos($dirs[count($dirs) - 1], '.')) {
            array_pop($dirs);
        }
        foreach ($dirs as $part) {
            $dir .= $part . DIRECTORY_SEPARATOR ;
            if (!is_dir($dir) && strlen($dir) > 0) {
                mkdir($dir, $rights);
            }
        }
    }
这样,如果目录不存在,则会创建到要创建的目录的所有目录


不幸的是,mkdir不能递归工作。

不清楚
$folder
是如何创建的,对于调试,每次脚本到达此处时,您都应该打印
$folder
的值。因为如果
$folder
包含无效的内容
!is_dir()
将返回
true
mkdir()
无法从中创建文件夹。然后像这样执行mkdir()
mkdir('path/to/folder',0777,true)true
,则code>Read more here
mkdir
会递归工作。我遇到了与此相同的问题:使用IIS和PHP5.6,所以我使用了它。递归函数应该可以工作,但并不总是这样。
function mkdir_r($dirName, $rights = 0777)
    {
        $dirs = explode(DIRECTORY_SEPARATOR , $dirName);
        $dir = '';
        if (strpos($dirs[count($dirs) - 1], '.')) {
            array_pop($dirs);
        }
        foreach ($dirs as $part) {
            $dir .= $part . DIRECTORY_SEPARATOR ;
            if (!is_dir($dir) && strlen($dir) > 0) {
                mkdir($dir, $rights);
            }
        }
    }