【发布时间】:2013-11-26 16:11:12
【问题描述】:
我偶然发现了 PHP 中 mkdir 函数的一个奇怪行为。下面是我的简单代码示例。
$filepath = '/media/static/css/common.css';
if (!file_exists(dirname($filepath)))
{
mkdir(dirname($filepath), 0777, TRUE);
}
“媒体”文件夹始终存在。必须创建“媒体”文件夹中的所有文件夹。在处理 common.css 文件之前,我想创建一个文件夹“/static/css”。
mkdir 偶尔会抛出异常“文件存在”。如果文件夹不存在,我尝试创建它。我认为“文件存在”是一个常见错误,因此该文件夹存在。
我知道我给你的信息很少,这是一个非常奇怪的错误。也许您可以给我任何建议,我必须做什么以及如何测试该错误并找到瓶颈。
服务器:CentOS 6.4 版
谢谢。
【问题讨论】:
-
你可能想试试 PHP 的
is_dir()而不是file_exists()。它检查目录而不是文件。 -
@showdev 不幸的是同样的问题存在。
-
您在根目录而不是工作文件夹中创建目录
-
var_dump(is_dir('/media/static/css/'))的输出是什么? -
如果您有多个客户端同时调用 php 文件,则脚本的多个实例可能都从 file_exists 中获取 false,然后并行尝试调用 mkdir(除了第一个脚本之外的所有种族将获得例外)