重命名文件权限
我正在尝试复制从目录外的 zip 文件夹中拉出的一些文件。我修改了此页面的代码
大部分情况下它都有效,但是当它正在尝试重命名它提取的目录文件,
Warning: rename(.,Manga/Naruto/Hell/.) [function.rename]: Permission denied in C:\public_html\mangaUpload.php on line 124
Warning: rename(..,Manga/Naruto/Hell/..) [function.rename]: Permission denied in C:\public_html\mangaUpload.php on line 124
尽管我已经选择了所有正在使用的文件夹,但我收到以下错误,这是代码
if(!file_exists("Manga"))
{
mkdir("Manga",0777);
chmod("Manga",0777);
}
if(!file_exists("Manga/".$_POST['mangaName']))
{
mkdir("Manga/".$_POST['mangaName'],0777);
chmod("Manga/".$_POST['mangaName'],0777);
}
if(!file_exists("Manga/".$_POST['mangaName']."/".$_POST['chapterName']))
{
mkdir("Manga/".$_POST['mangaName']."/".$_POST['chapterName'],0777);
chmod("Manga/".$_POST['mangaName']."/".$_POST['chapterName'],0777);
}
$pathname = "Manga/".$_POST['mangaName']."/".$_POST['chapterName']."/";
$chapterZip = new ZipArchive();
if ($chapterZip->open($_FILES['chapterUpload']['tmp_name']) === true) {
for($i = 0; $i < $chapterZip->numFiles; $i++) {
$chapterZip->extractTo($pathname, array($chapterZip->getNameIndex($i)));
chmod($pathname.$chapterZip->getNameIndex($i),0777);
list($width, $height) = getimagesize($pathname.$chapterZip->getNameIndex($i));
$imageLocation= "INSERT INTO imageLocation (imageLocation,imageWidth,imageHeight,chapterID) VALUES ('"."Manga/".$_POST['mangaName']."/".$_POST['chapterName']."/".$chapterZip->getNameIndex($i).
"',".$width.",".$height.",".$chapterID.")";
getQuery($imageLocation,$l);
}
$chapterZip->close();
$directories = glob($pathname.'*', GLOB_ONLYDIR);
if ($directories !== FALSE) {
foreach($directories as $directory) {
$dir_handle = opendir($directory);
while(($filename = readdir($dir_handle)) !== FALSE) {
// Move all subdirectory contents to "Chapter Folder"
if (rename($filename, $pathname.basename($filename)) === FALSE) {
$errmsg0.= "Error moving file ($filename) \n";
}
else {
$errmsg0.="You have successfully uploaded a manga chapter";
}
}
}
}
}
I am trying to copy over some files pulled out from a zip folder, from out of the directory. I modified the code from this page
for the most part it works, but when it is attempting the rename the directory files it pulls I get the following error
Warning: rename(.,Manga/Naruto/Hell/.) [function.rename]: Permission denied in C:\public_html\mangaUpload.php on line 124
Warning: rename(..,Manga/Naruto/Hell/..) [function.rename]: Permission denied in C:\public_html\mangaUpload.php on line 124
despite the fact I have chomed all the folders being used, here is the code
if(!file_exists("Manga"))
{
mkdir("Manga",0777);
chmod("Manga",0777);
}
if(!file_exists("Manga/".$_POST['mangaName']))
{
mkdir("Manga/".$_POST['mangaName'],0777);
chmod("Manga/".$_POST['mangaName'],0777);
}
if(!file_exists("Manga/".$_POST['mangaName']."/".$_POST['chapterName']))
{
mkdir("Manga/".$_POST['mangaName']."/".$_POST['chapterName'],0777);
chmod("Manga/".$_POST['mangaName']."/".$_POST['chapterName'],0777);
}
$pathname = "Manga/".$_POST['mangaName']."/".$_POST['chapterName']."/";
$chapterZip = new ZipArchive();
if ($chapterZip->open($_FILES['chapterUpload']['tmp_name']) === true) {
for($i = 0; $i < $chapterZip->numFiles; $i++) {
$chapterZip->extractTo($pathname, array($chapterZip->getNameIndex($i)));
chmod($pathname.$chapterZip->getNameIndex($i),0777);
list($width, $height) = getimagesize($pathname.$chapterZip->getNameIndex($i));
$imageLocation= "INSERT INTO imageLocation (imageLocation,imageWidth,imageHeight,chapterID) VALUES ('"."Manga/".$_POST['mangaName']."/".$_POST['chapterName']."/".$chapterZip->getNameIndex($i).
"',".$width.",".$height.",".$chapterID.")";
getQuery($imageLocation,$l);
}
$chapterZip->close();
$directories = glob($pathname.'*', GLOB_ONLYDIR);
if ($directories !== FALSE) {
foreach($directories as $directory) {
$dir_handle = opendir($directory);
while(($filename = readdir($dir_handle)) !== FALSE) {
// Move all subdirectory contents to "Chapter Folder"
if (rename($filename, $pathname.basename($filename)) === FALSE) {
$errmsg0.= "Error moving file ($filename) \n";
}
else {
$errmsg0.="You have successfully uploaded a manga chapter";
}
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
哈哈,这不是权限问题:)
解决方法:
考虑使用现代的 glob() 而不是古老的 opendir。
LOL it's not a permission problem :)
a workaround:
consider to use modern glob() instead of ancient opendir.
从
rename
循环中排除.
和..
,因为它们是分别引用当前文件夹和父文件夹的别名(请记住为什么要这样做cd ..
转到父文件夹):Exclude
.
and..
from therename
loop as they are aliases that refer to current folder and parent folder respectively (remember why you docd ..
to go to parent folder):