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