php cli读取文件以及如何解决它?

时间:2011-07-01 04:40:15

标签: php

在ubuntu中使用PHP cli时我得到了apache作为web服务器我无法读取文件,我可以在浏览器中使用它。 关于错误,它只显示没有,下一个像我刚刚使用此代码进行测试:

<?
$handle = fopen("testFile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
    echo $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
if(!is_readable($handle)
{
 die("Not readable");
}
fclose($handle);
}
?>

我该如何解决?

编辑:

在fopen之前移除'@'后我得到以下错误

  

fopen(testFile.txt):无法打开   stream:没有这样的文件或目录   第2行的/var/www/log/ka.php

1 个答案:

答案 0 :(得分:5)

当您通过CLI运行脚本时,它使用您的shell的工作目录,而不是文件的目录(Apache将其作为当前目录)。这对您很重要,因为您的fopen电话取决于相对路径;并且相对路径相对于工作目录而不是脚本解析。

要使您的脚本与Apache一样,您需要在运行cd /var/www/log命令之前php,或者在PHP脚本的开头添加它:

chdir(dirname(__FILE__));