快速提问。我将从一个例子开始。
我有一个类似Facebook的社交网站。当用户注册我的PHP脚本时,会创建一个以其用户名命名的目录,并为该用户创建一个名为“photos”的自定义子目录。
当有人注册时,永远不会创建“照片”目录。我认为这是因为实际的服务器首先没有创建实际的用户名目录。
我的解决方案是,无论何时我需要在我的网站上为用户执行照片功能,我应该检查该文件夹是否存在,如果没有创建它,哪个工作正常。这是标准程序吗?或者在运行检查时是否有更好的方法同时创建多个目录。
当有人注册时,我运行此代码,而后者if语句无法成功创建照片文件夹,所以我在编辑照片时会检查这两个语句,以检查文件夹是否存在
if (!file_exists("user/$username")) {
mkdir("user/$username", 0755);
}
if (!file_exists("user/$username/photos"))
{
mkdir("user/$username/photos", 0755);
}
答案 0 :(得分:1)
目录是按顺序/同步创建的,因此一旦第一个mkdir()
的执行完成,文件夹应该在那里并带有指示的权限集。
如上所述here mkdir()
成功时返回TRUE,失败时返回FALSE。
和
如果目录已存在,则发出E_WARNING级别错误。
如果相关权限阻止,则发出E_WARNING级别错误 创建目录。
所以你可以去:
if (!file_exists("user/$username")) {
if(mkdir("user/$username", 0755))
{
//directory created
if (!file_exists("user/$u/photos"))
{
mkdir("user/$username/photos", 0755);
}
}
else
{
//directory not created
}
}
如果mkdir()
返回false
- 请检查日志或处理错误。
答案 1 :(得分:0)
你可以做一个快速的目录'存在'像这样检查
function check($images_dir) {
if($handle = opendir($images_dir)) {
// directory exists do your thing
closedir($handle);
} else {
// create directory
}
}
其中$images_dir
= path / directory / user / $ username