回 帖 发 新 帖 刷新版面

主题:请问 为什么不能写文件 谢谢

下面是书上的例题:
<?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个回复)

沙发

首先要确定 路径正确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);
?>

板凳

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 楼

为了确认文件存不存在,应该写在最上面,  
  if(!file_exists($file_name)); 
  { 
  print"文件".$filename."不存在!";
  }

因为是判断了是否存在,再去打开的,如果不存在,你又怎么打开呢!
如果都打开了,你再来判断存不存在,这样就根本没有意义了!
(都打开了,那就一定存在了)

后面的1说明文件存在,对吗?
不对!那个"1"不知道你在那里弄出来的!

“在当前路径下,具有读写权限”,指的是什么?
在WINDOWS就不用管他什么读写权限,
但在Linux就不一样了!如果你要做这个写入功能,你要把文件的权限设定为777.

什么搭建不起来php环境????如果你不会,就请看
http://www.programfan.com/club/showbbs.asp?id=198306

4 楼

一个人住你好,谢谢你详尽的解释,你介绍的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 楼

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 楼

一个人住你好,谢谢你的鼓励和指导,我重来吧,把前面的都删掉,然后按照
id=198306所示的步骤重来一遍。
今天我用phpinfo()调看服务器的php环境信息,他用的是php4.4.4,而我书上
提供的代码是php5.1.12的,是不是版本间的差距造成我这几天的不顺利?
php4.4.4的写语句与上面我写的是否不同?
谢谢你的帮助。

7 楼

虽然PHP5并非与PHP4完全兼容,但也没有至于连那几句都不能用!
你有没有杳看你服务器的系统是什么?
如果是Linux就要把文件的权限设定为777.这样你才可以写入!

你在写入之前加上
if (!is_writable ($filename)){
die ("文件:".$filename."不可写,请检查其属性后重试!");
}

看一下是否有写入的权限吧!

8 楼

谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册