$handle = fopen("/home/rasmus/file.txt", "w");
if(!handle){
 print "yes";
}else{
 print "no";
}
系统是linux系统,查看php参数,php版本4.3.9,allow_url_open为打开on
但是不管怎样总是无法打印“no”,总是打印yes,请问这是为什么呢?是什么原因呢?

解决方案 »

  1.   

    需要在php.ini中的open_basedir配置
    把/home/rasmus/目录加到open_basedir后面就可以了
      

  2.   

    if(!handle){ 
    ==》
    if(!$handle){
      

  3.   

    回复逸学堂,我照你的去做了,但还是不好使啊,还是打印yes 啊
      

  4.   

    你打开方式是"W",如果不存在它会自己创建一个file.txt
      

  5.   

    对啊,我就是想不存在就创建,问题是不创建啊,w,w+,x,x+都试验了,都不行啊
      

  6.   

    在tmp中创建试试
    把display_error开关打开,查看一下具体错误吧。
    安你的操作,对应手册应该没有问题的。
    open() 将 filename  指定的名字资源绑定到一个流上。如果 filename  是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename  当成一个普通的文件名继续执行下去。如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。    注意: 所支持的协议列表见附录 N, 支持的协议/封装协议列表。某些协议(也被称为 wrappers)支持 context 和/或 php.ini 选项。参见相应的页面哪些选项可以被设定(例如 php.ini 中用于 http wrapper 的 user_agent 值)。     注意: 对 context 的支持是 PHP 5.0.0 添加的。有关 context 的说明见Streams。    注意: 自 PHP 4.3.2 起,对所有区别二进制和文本模式的平台默认模式都被设为二进制模式。如果在升级后脚本碰到问题,尝试暂时使用 't' 标记,直到所有的脚本都照以下所说的改为更具移植性以后。 mode 参数指定了所要求到该流的访问类型。可以是以下: 
      

  7.   

    $handle   =   fopen( "/home/rasmus/file.txt ",   "w "); 
    if($handle){ 
      print   "yes "; 
      echo is_file('/home/rasmus/file.txt') ? 'yes':'no';
    }else{ 
      print   "no "; 
      

  8.   

    错误提示是:
     Notice: Undefined variable: handle in /project/redirect.php online 3Warning: fopen(/home/rasmus/file.txt): faailed to open stream: Permission denide in /project/redirect.php on line 3Notice : Undefined variable: handle in /project/redirect.php on line 7
    yesredirect.php就是我写的php文件第3行是$handle   =   fopen( "/home/rasmus/file.txt ",   "w "); 
    第7行是if(!handle){ 我服了啊,文件夹权限都已经打开了啊?急死了!
      

  9.   

    使用sudo执行,或者在root用户执行
      

  10.   

    我用root用户执行还是不行啊??为什么呢?是不是还有其他说法啊?
      

  11.   

    你用ROOT改过HOME的属性么?WEB服务器的用户和HOME属于一个组么?
    建议用相对路径比较好。
      

  12.   

    改成相对路径也不行,提示failed   to   open   stream:   Permission   denied。哭了,一个星期没有解决这个问题了,我快崩溃了
      

  13.   

    chmod("/home/rasmus/file.txt", 0755);
    加入这句话后,再读下这个文件试试返回的是什么?如果返回的是true则说明该用户可以访问,否则该文件,该用户不能被访问。
    这句话,在读入之前处理。
    试下吧。