欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

windows2003服务器,文件有读写权限,但以下php代码执行后无法写入,求救!

程序员文章站 2024-04-04 18:56:47
...
$ipfile="./user.txt";

if (get_magic_quotes_gpc()) {
if (!$fp = fopen($ipfile, "a+")) {
// die("创建在线列表文件失败, 请检查是否有权限.");
}
$time=time();
$line = $username."|".$REMOTE_ADDR."|".$time."\r\n";
$old=file($ipfile);
$num=count($old);
$fp=fopen($ipfile, "w");
flock($fp,2);
if($num fputs($fp,$line);
for ($i=0;$i fputs($fp,$old[$i]);
}}else{
fputs($fp,$line);
for($i=0;$i fputs($fp,$old[$i]);
}}
fclose($fp);
}
?>

================执行以上在该服务器上无法写入,但 在其它服务器空间可以正确运行写入,不知是不是服务器中php.ini哪项没有打开造成的?=================

同样执行以下文件测试该服务器有没有写入权限,以下php文件又能正确执行并写入数据的,请教为什么上面的执行无法写入。


$filename = "user.txt";
$contents = "我是张斌";
if(is_writable($filename)){
if(($handle = fopen($filename,"a") )== false){
echo "写入文件 $filename 失败";
exit();
}
if(fwrite($handle,$contents) == false){
echo "写入文件$filename失败";
exit();
}
echo "写入文件 $filename 成功";

fclose($handle);
}else{
echo "文件$filename不可写入";
}
?>


回复讨论(解决方案)

$ipfile="./user.txt";
另一个是
$filename = "user.txt";

怀疑已经写进去了,只是写到别的位置上去了

如果是 IIS 那么需要在管理器中勾选“写入”
如果不是,则应检查一般用户是否有写权限

相关的文件夹还需勾选“高级”中的“允许存档”

不是这原因,同样的代码,在另一台服务器空间中正确运行,这台服务器就不行,应该是服务器哪个设置有问题,读写权限已开了

如果是 IIS 那么需要在管理器中勾选“写入”
如果不是,则应检查一般用户是否有写权限

相关的文件夹还需勾选“高级”中的“允许存档”

这台服务器上可以执行删除,是不是说明已有读写权限?另外如果说没读写权限,发的 第二段代码可以写入的啊,就是第一段代码写入不了,下面这段删除代码也能正确执行的:

if($del=="1"){//删除
$old=file("$ipfile");
$num=count($old);
$fp=fopen("$ipfile","w");
$no=$num-1;

for ($i=0;$i list($usre,$ip,$time)=explode("|",$old[$i]);
if($txtzzip!=$jilu){ fputs($fp,$old[$i]); }
}
fclose($fp);
}