我正在用PHP创建一个Intranet客户经理。为每个客户创建一个目录,供商店添加文件。我的脚本应该做的是如果没有目录存在创建它,如果它存在则不创建它。 实际发生的是,如果目录已经存在,我收到以下错误:
Warning: mkdir() [function.mkdir]: File exists in C:\server2go\server2go\htdocs\customermgr\administrator\components\com_chronoforms\form_actions\custo m_code\custom_code.php(18) : eval()'d code on line 14
所以正在发生的事情是尝试创建它无论如何,即使if语句应该停止它?,我对我做错了什么感到困惑:-S。
<?php
$customerID = $_GET['cfid'];
$directory = "/customer-files/$customerID";
if(file_exists($directory) && is_dir($directory)) {
}
else {
$thisdir = getcwd();
mkdir($thisdir ."/customer-files/$customerID" , 0777); }
?>
答案 0 :(得分:1)
替换:
if(file_exists($directory) && is_dir($directory)) {
使用:
$thisdir = getcwd();
if(file_exists($thisdir.$directory) && is_dir($thisdir.$directory)) {
或更好:
<?php
$customerID = $_GET['cfid'];
$directory = "./customer-files/$customerID";
if(file_exists($directory) && is_dir($directory)) {
}
else {
mkdir($directory , 0777); }
?>
答案 1 :(得分:1)
只是看了一眼,但我会尝试这个:
$directory = $thisdir . "/customer-files/$customerID";
并从mkdir();
中删除$ thisdir你也应该在$ directory声明之前移动$ thisdir
答案 2 :(得分:1)
函数file_exists()不使用is_dir()可以使用的相对路径。因此,使用公分母并将绝对路径传递给这些函数。此外,您可以将getcwd()
的呼叫转移到$directory
分配中,稍后重新使用$directory
来创建目录。
<?php
$customerID = $_GET['cfid'];
// Get full path to directory
$directory = getcwd() . "/customer-files/$customerID";
if(file_exists($directory) && is_dir($directory)) {
// Do nothing
}
else {
// Directory doesn't exist, make it
mkdir($directory , 0777); }
}
?>