$file_handle = fopen("/root/test/1.txt", "r");
路径是正确的却报错fopen(/root/test/1.txt) [function.fopen]: failed to open stream: No such file or directory in 
直接放程序当前目录可以读,程序在另个目录

解决方案 »

  1.   

    百度了下说和ini文件没关系,只有个限制目录的,我试了也是行
      

  2.   


    fopen(PHP 3, PHP 4, PHP 5)fopen -- 打开文件或者 URL 说明resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )fopen() 将 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 的说明见参考 CLX, Stream Functions。注意: 自 PHP 4.3.2 起,对所有区别二进制和文本模式的平台默认模式都被设为二进制模式。如果在升级后脚本碰到问题,尝试暂时使用 't' 标记,直到所有的脚本都照以下所说的改为更具移植性以后。mode 参数指定了所要求到该流的访问类型。可以是以下:表 1. fopen() 中 mode 的可能值列表'r' 只读方式打开,将文件指针指向文件头。
    'r+' 读写方式打开,将文件指针指向文件头。
    'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
    'x+' 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
    注意: 不 同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。默 认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了 \n 作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用 't'。在所有其它情况下使用 'b'。在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。注意: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。注意: 再一次,为移植性考虑,强烈建议你重写那些依赖于 't' 模式的代码使其使用正确的行结束符并改成 'b' 模式。如果也需要在 include_path 中搜寻文件的话,可以将可选的第三个参数 use_include_path 设为 '1' 或 TRUE。如果打开失败,本函数返回 FALSE。例 1. fopen() 例子<?php
    $handle = fopen("/home/rasmus/file.txt", "r");
    $handle = fopen("/home/rasmus/file.gif", "wb");
    $handle = fopen(" http://www.example.com/", "r");
    $handle = fopen(" ftp://user:[email protected]/somefile.txt", "w");
    ?>
    如果在用服务器模块版本的 PHP 时在打开和写入文件上遇到问题,记住要确保所使用的文件是服务器进程所能够访问的。在 Windows 平台上,要小心转义文件路径中的每个反斜线,或者用斜线。<?php
    $handle = fopen("c:\\data\\info.txt", "r");
    ?>
    popen
    (PHP 3, PHP 4, PHP 5)popen -- 打开进程文件指针 说明resource popen ( string command, string mode )打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss() 和 fwrite()。如果出错返回 FALSE。注意: 如果需要双向支持,使用 proc_open()。例 1. popen() 例子<?php
    $handle = popen("/bin/ls", "r");
    ?>
    注意: 如果未找到要执行的命令,会返回一个合法的资源。这看上去很怪,但有道理。它允许访问 shell 返回的任何错误信息:<?php
    error_reporting(E_ALL);/* 加入重定向以得到标准错误输出 stderr。 */
    $handle = popen('/path/to/spooge 2>&1', 'r');
    echo "'$handle'; " . gettype($handle) . "\n";
    $read = fread($handle, 2096);
    echo $read;
    pclose($handle);
    ?>
    注意: 在打开了安全模式时,只能执行在 safe_mode_exec_dir 之内的程序。为实用起见目前不能在指向程序的路径中包含 .. 成分。fsockopen
    (PHP 3, PHP 4, PHP 5)fsockopen -- Open Internet or Unix domain socket connection Descriptionresource fsockopen ( string target [, int port [, int &errno [, string &errstr [, float timeout]]]] )
    例 1. fsockopen() Example<?php
    $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
    if (!$fp) {
         echo "$errstr ($errno)<br />\n";
    } else {
         $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
         $out .= "Connection: Close\r\n\r\n";     fwrite($fp, $out);
         while (!feof($fp)) {
             echo fgets($fp, 128);
         }
         fclose($fp);
    }
    ?>
    The example below shows how to retrieve the day and time from the UDP service "daytime" (port 13) in your own machine.
    例 2. Using UDP connection<?php
    $fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
    if (!$fp) {
         echo "ERROR: $errno - $errstr<br />\n";
    } else {
         fwrite($fp, "\n");
         echo fread($fp, 26);
         fclose($fp);
    }
    ?> 
      

  3.   

    /root/test/1.txt 这是绝对路径。
      

  4.   

    如果在路径对的情况下,注意应该是这样写的fopen("//root//test//1.txt", "r");注意转义字符。
      

  5.   

    No such file or directory in  
    不存在的文件或目录很显然,你的路径写的不对
    你的绝对路径什么?
      

  6.   

    你这是linux 吗,那就不能再路径开始用“/”,这代表根,根目录下的root/test/1.txt ,相对路径"/"要写成"./",或者不写"/"。