我在foreach循环中使用mkdir()
来创建我的文件夹:
if (!file_exists($id))
{
mkdir($id);
}
$id
可以是529e1f4070b0c
创建了文件夹,但是当通过FTP或直接从Direct Admin文件管理器访问它们时,我遇到没有这样的文件或目录,当通过浏览器访问时也遇到404 Not found页面。
怎么了?
#Update 1
我已移除foreach
循环并手动分配$id
,效果良好,文件夹已创建且可访问,但当它位于foreach
内时,文件夹已创建但无法访问!
#Update 2
我将代码更改为使用评论中建议的完整路径:
if (!file_exists(dirname(__FILE__)."/".$id))
{
mkdir(dirname(__FILE__)."/".$id, 0777);
}
这也导致以前的结果!
#Update 3
完整的代码:
$file = file("codes.txt");
foreach ($file as $id)
{
$html = content_of_url($id);
if (!file_exists(dirname(__FILE__)."/".$id))
{
mkdir(dirname(__FILE__)."/".$id, 0777);
}
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $i => $img)
{
$url = str_replace("../..", "http://domain.com", $img->getAttribute('src'));
file_put_contents(dirname(__FILE__)."/".$id."/".$i.".jpg", file_get_contents($url));
}
}
答案 0 :(得分:0)
使用以下
if (!is_dir($id))
{
mkdir($id,0777);
}
假设您正在'ID FOLDER'文件夹中创建文件夹
然后指定路径
if (!is_dir('ID FOLDER'.$id))
{
mkdir('ID FOLDER'.$id,0777);
}
答案 1 :(得分:0)
尝试设置权限:)并设置recursive = true
$path = "folder/path/where/files/should/be/stored/";
mkdir($path , 0777, true);
不要给它带文件名...首先创建路径,而不是文件
$handle = fopen( $path . "\ressource.txt", "r");
您可能需要替换/用\\
答案 2 :(得分:0)
更改权限,这可能会有所帮助
答案 3 :(得分:0)
尝试在Windows下使用反斜杠或在路径中使用常量DIRECTORY_SEPARATOR。此外,您可以尝试更改权限。
答案 4 :(得分:0)
您需要为“非apache”用户访问的文件夹设置权限。 使用chmod指令。 http://www.php.net/chmod
答案 5 :(得分:0)
创建文件夹后,尝试使用chmod()
更改文件夹权限。