主题:请问 为什么不能写文件 谢谢
淡淡的
[专家分:2030] 发布于 2007-02-05 17:50:00
下面是书上的例题:
<?php
$filename="file_test.txt";
$somecotent="p116写文件的例题\n";
if(!$handle=fopen($filename,'a')){
print"不能打开文件$filename";
exit;
}
if(!fwrite($handle,$somecontent)){
print"不能写入到文件$filename";
exit;
}
print"成功地将¥somecontent写入到文件$filename";
fclose($handle);
?>
发到服务器上运行后显示:
不能写入到文件file_test.txt
请朋友们告诉我,错在哪里?
谢谢!
回复列表 (共8个回复)
沙发
longlong16 [专家分:10670] 发布于 2007-02-07 10:30:00
首先要确定 路径正确file_test.txt 存在 并且在当前路径下,具有读写权限,
然后:
<?php
$filename="file_test.txt";
$somecotent="p116写文件的例题\n";
if(!$handle=fopen($filename,'w')){
print"不能打开文件$filename";
exit;
}
if(!fwrite($handle,$somecontent)){
print"不能写入到文件$filename";
exit;
}
print"成功地将¥somecontent写入到文件$filename";
fclose($handle);
?>
板凳
淡淡的 [专家分:2030] 发布于 2007-02-08 10:46:00
longlong16你好,谢谢你帮我解答问题,
1。我曾经把'a'换成'w',结果是一样的,
2。为了确定文件是否存在,我在第2个if中加了2句:
if(!fwrite($handle,$somecontent)){
print"不能写入到文件$filename";
$file_name="file_test.txt"; '+
echo (file_exists($file_name)); '+
exit;
输出结果是: 不能写入到文件file_test.txt1
后面的1说明文件存在,对吗?
3。“在当前路径下,具有读写权限”,指的是什么?
因我在自己的机器中搭建不起来php环境,所以是直接把代码传到服务器上,
“读写权限”是否受服务器端限制?而且当我把代码传到别人的服务器上时,
返回的信息是“不能打开文件file_test.txt”。
4。我刚刚开始学php,麻烦你费心多多帮助。
5。你的签名令人惊奇,看了半天我才知道,那写的是我自己。
谢谢!
3 楼
一个人住 [专家分:3290] 发布于 2007-02-08 14:55:00
为了确认文件存不存在,应该写在最上面,
if(!file_exists($file_name));
{
print"文件".$filename."不存在!";
}
因为是判断了是否存在,再去打开的,如果不存在,你又怎么打开呢!
如果都打开了,你再来判断存不存在,这样就根本没有意义了!
(都打开了,那就一定存在了)
后面的1说明文件存在,对吗?
不对!那个"1"不知道你在那里弄出来的!
“在当前路径下,具有读写权限”,指的是什么?
在WINDOWS就不用管他什么读写权限,
但在Linux就不一样了!如果你要做这个写入功能,你要把文件的权限设定为777.
什么搭建不起来php环境????如果你不会,就请看
http://www.programfan.com/club/showbbs.asp?id=198306
4 楼
淡淡的 [专家分:2030] 发布于 2007-02-08 17:02:00
一个人住你好,谢谢你详尽的解释,你介绍的id=198306这篇文章我详细的研究过,
但因我是先按照书上指点,在www.php.net上下载了php-5.2.0-win32压缩包和
php-5.2.0-win32-installer,安装、配置后,机器对php代码部分没反应,我知道
肯定是我操作有问题,但又不知道怎么解决好,想把它们全删掉,然后按照id=198306
重新安装,正在犹豫,我对自己的操作实在是没信心。
另外,我把书上一个完整的留言板程序发到服务器上后,返回了5个warning,第一个
是:Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in ....
为什么呀?这叫我怎么往下学呀?
希望不断得到你的帮助,谢谢!
5 楼
一个人住 [专家分:3290] 发布于 2007-02-09 14:38:00
PHP是不需要安装的,只要解压,再把DLL文件放到指定的位置就可以了!之后就改配置文件就可以很好的使用PHP了!~~
其实安装并不难,给自已点信心,照着上面的介绍来安装就可以了!
在这里提醒你一句,在配置apache的时候,如果你修改了配置文件,你一定要重启apache才可以运行修改后的设置!!
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in ....
连接不到数据库,你修改一下你的连接文件就可以了!
其它的四个有可能是因为这个错误,连接不到数据库而引起的,你先把连接改了!
再看看别的错吧,
如果你的留言本带安装功能,就可以安装数据表,如果不带,你就要手动去还原!
这才可以很好的运行!
6 楼
淡淡的 [专家分:2030] 发布于 2007-02-09 20:47:00
一个人住你好,谢谢你的鼓励和指导,我重来吧,把前面的都删掉,然后按照
id=198306所示的步骤重来一遍。
今天我用phpinfo()调看服务器的php环境信息,他用的是php4.4.4,而我书上
提供的代码是php5.1.12的,是不是版本间的差距造成我这几天的不顺利?
php4.4.4的写语句与上面我写的是否不同?
谢谢你的帮助。
7 楼
一个人住 [专家分:3290] 发布于 2007-02-10 09:35:00
虽然PHP5并非与PHP4完全兼容,但也没有至于连那几句都不能用!
你有没有杳看你服务器的系统是什么?
如果是Linux就要把文件的权限设定为777.这样你才可以写入!
你在写入之前加上
if (!is_writable ($filename)){
die ("文件:".$filename."不可写,请检查其属性后重试!");
}
看一下是否有写入的权限吧!
8 楼
淡淡的 [专家分:2030] 发布于 2007-02-10 11:03:00
谢谢!
我来回复