mkdir(): 使用 PHP 创建目录时权限被拒绝
mkdir(): Permission denied when making directories using PHP
我到处找了找,但还是能找到解决这个问题的方法。
我正在尝试在包含一些图像等的专用目录中生成 XML 文件。
但由于警告,我无法创建目录:警告:mkdir(): Permission denied in C:\wamp64\www\motor\cpanel.php on line 52
/** create XML file */
function generisanje(){
$mysqli = OpenCon2();
$mysqli->query("SET NAMES 'utf8'");
$query = "SELECT CONCAT(Ime , Prezime) as Ime, Adresa, broj_Telefona, Drzava, Email, potrosac.id_Potrosaca, Mesto, postanski_Broj, vreme_Narucivanja, proizvodi.Boja, proizvodi.Naziv, proizvodi.Cena, proizvodi.Velicina, proizvodi.Priprema, proizvodi.Primer, proizvodi.Tip, proizvodi.Kolicina FROM potrosac JOIN proizvodi ON potrosac.id_Potrosaca=proizvodi.id_Potrosaca WHERE (SELECT DATE_FORMAT(potrosac.vreme_Narucivanja ,'%d-%m-%y'))=(SELECT DATE_FORMAT(SYSDATE(),'%d-%m-%y')) ";
$narudzbina = array();
//CONCAT(Ime , " ", Prezime)as Ime
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
array_push($narudzbina, $row);
}
if(count($narudzbina)){
createXMLfile($narudzbina);
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
}
function createXMLfile($narudzbina){
$id="strasilo";
foreach ($narudzbina as $komad) {
$ime = strval($komad['Ime']);
mkdir("naruzbine ". date("d-m-Y")."/".$ime."", true);
}
}
在上面,您可以看到部分代码从 MySQL 和 returns 行获取查询,并根据行中的名称 (Ime) 创建目录。
我在 Windows 笔记本电脑上使用 WAMP。
这真的很奇怪,因为每当我使用数据库中的单个名称时它都会起作用。我需要将名称和姓氏显示为目录名称,因此我需要 CONCAT 或将两个字符串放在一起,但每当我尝试类似的警告时,就会弹出警告,最终我没有目录。
编辑:我确信 $ime 使这一切发生了。如果我改变
$ime = strval($komad['Ime']);到
$ime= "一些字符串";
一切都按预期运行,但这不符合我的用例。
感谢您的帮助!
您缺少 mkdir()
的参数。 $recursive
参数是第三个参数,需要把权限放在前面。
mkdir("naruzbine ". date("d-m-Y")."/".$ime, 0777, true);
true
被视为 $permissions = 0001
,因此它正在创建没有写入权限的目录。
我失去了耐心,做事轻而易举。因此,我通过在字符串进入数据库之前联系字符串来解决这个问题。所以我现在只从查询中提取一个变量,一切正常。
我到处找了找,但还是能找到解决这个问题的方法。 我正在尝试在包含一些图像等的专用目录中生成 XML 文件。 但由于警告,我无法创建目录:警告:mkdir(): Permission denied in C:\wamp64\www\motor\cpanel.php on line 52
/** create XML file */
function generisanje(){
$mysqli = OpenCon2();
$mysqli->query("SET NAMES 'utf8'");
$query = "SELECT CONCAT(Ime , Prezime) as Ime, Adresa, broj_Telefona, Drzava, Email, potrosac.id_Potrosaca, Mesto, postanski_Broj, vreme_Narucivanja, proizvodi.Boja, proizvodi.Naziv, proizvodi.Cena, proizvodi.Velicina, proizvodi.Priprema, proizvodi.Primer, proizvodi.Tip, proizvodi.Kolicina FROM potrosac JOIN proizvodi ON potrosac.id_Potrosaca=proizvodi.id_Potrosaca WHERE (SELECT DATE_FORMAT(potrosac.vreme_Narucivanja ,'%d-%m-%y'))=(SELECT DATE_FORMAT(SYSDATE(),'%d-%m-%y')) ";
$narudzbina = array();
//CONCAT(Ime , " ", Prezime)as Ime
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
array_push($narudzbina, $row);
}
if(count($narudzbina)){
createXMLfile($narudzbina);
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
}
function createXMLfile($narudzbina){
$id="strasilo";
foreach ($narudzbina as $komad) {
$ime = strval($komad['Ime']);
mkdir("naruzbine ". date("d-m-Y")."/".$ime."", true);
}
}
在上面,您可以看到部分代码从 MySQL 和 returns 行获取查询,并根据行中的名称 (Ime) 创建目录。 我在 Windows 笔记本电脑上使用 WAMP。 这真的很奇怪,因为每当我使用数据库中的单个名称时它都会起作用。我需要将名称和姓氏显示为目录名称,因此我需要 CONCAT 或将两个字符串放在一起,但每当我尝试类似的警告时,就会弹出警告,最终我没有目录。
编辑:我确信 $ime 使这一切发生了。如果我改变 $ime = strval($komad['Ime']);到 $ime= "一些字符串"; 一切都按预期运行,但这不符合我的用例。
感谢您的帮助!
您缺少 mkdir()
的参数。 $recursive
参数是第三个参数,需要把权限放在前面。
mkdir("naruzbine ". date("d-m-Y")."/".$ime, 0777, true);
true
被视为 $permissions = 0001
,因此它正在创建没有写入权限的目录。
我失去了耐心,做事轻而易举。因此,我通过在字符串进入数据库之前联系字符串来解决这个问题。所以我现在只从查询中提取一个变量,一切正常。