/a.php 文件里里调用函数
s($lujin)而函数文件在 /hanshu/b.php里。function s(xsurl){
$shengchenglujin="$xsurl/index.html";
if(!$handle=fopen($shengchenglujin,'w')){
echo $cuowu= $shengchenglujin.'路径不能写入';
return $cuowu;
}
if(is_writable($shengchenglujin)){
if(!fwrite($handle,$str)){
echo $cuowu1='不能写入';
return $cuowu1; }else{//print"生成成功,";
fclose($handle);} //把刚才替换的内容写进生成的HTML文件
}else{echo "文件不可写";}
}a.php 执行后,提示文件不可写,,我就奇怪了。我mkdir可以,唯独文件创建就不可以。
你需要检查一下目录的权限另外,你说得到“文件不可写”"的输出,这是不合理的
如果目录不可写,那么 fopen($shengchenglujin,'w') 不会成功
应该是输出“路径不能写入”请给出真实的代码
$xsurl1="$xsurl";
if(!file_exists($xsurl1)){
mkdir($xsurl1);
echo $xsurl1.'<br>';
}
$m="muban/muluye.html";
/*if($fp=fopen($m,"r")){
echo "不能打开!退出生成!";
exit;
}*/
echo $m;
if($fp=fopen($m,'r')){echo '打开目录模板失败';}
$str=fread($fp,filesize($m));
$str.=str_replace('{DCId}',$DCId,$str);//类别ID
$str.=str_replace('{DCName}',$DCName,$str);//类名名称
$shengchenglujin="/$xsurl/index.html"; if(!$handle=fopen($shengchenglujin,'w+')){
echo $cuowu= $shengchenglujin.'路径不能写入';
return $cuowu;
} if(is_writable($shengchenglujin)){
if(!fwrite($handle,$str)){
print $cuowu1=$shengchenglujin.'不能写入';
return $cuowu1; }else{//print"生成成功,";
fclose($handle);} //把刚才替换的内容写进生成的HTML文件
}else{echo "文件不可写";}
fclose($handle);
$mysqli->close();
$shengchenglujin="/$xsurl/index.html";
为什么要多个“/”?
那不是从文件系统根算起了吗?
$xsurl=1;数字也就是表的ID。使用/$xsurl/index.html
是打算从根开始。
生成为
abc.com/1/index.html
这样。
你这个是网站的根
和文件系统的根,不是一回事!
现在 目录 1 。
/1/可以生成出来。
而在/1/下的index.html就生成不出来。是否使用x+ 模式fopen.?
$shengchenglujin="/$xsurl/index.html";
改成
$shengchenglujin=$xsurl.'/index.html';
第二 这个判断(!fwrite($handle,$str) 和
(fwrite($handle,$str) === FALSE) 有什么区别,用后者他就可以,前者就不可以。