PHP fopen在使用include和get_file_contents工作正常的文件上返回null

时间:2010-03-11 04:17:43

标签: php apache null xampp fopen

我在Windows 2000服务器上安装了XAMPP。除了PHP fopen函数之外,一切都很好用。我既不能创建也不能用它打开文件。奇怪的是我可以包含/ require / file_get_contents /其他文件相关的功能; fopen也不会产生任何错误或通知它只返回NULL。

我已经完全控制了文件和所有封闭文件夹给每个人,但我仍然得到NULL而不是文件指针。

我在php 5.2.9,5.2.13和5.3.1上试过这个效果相同。我已经浏览了php.ini文件,寻找破坏它的东西;我甚至尝试删除和使用Linux框中的基本ini文件,其中fopen正在工作但仍然没有。

我知道我必须在更改我的ini之后重新启动apache并且已经(我甚至重新启动了服务器)所以不是这样。

我正处于这种情况下,假设它是一个apache配置问题,明天我将通过php-cli运行测试来确保。

我真的不想再挫伤我的脑袋了,有些apache / php向导可以帮助我吗?


大家好,

感谢您的回复。你是对的是没有任何配置问题。问题必须是我的一个dll或我包含的文件之一。我刚刚尝试了相同的代码,这些代码在没有任何包含的情况下无法在新文件中工作,我禁用了我的自定义库并且它工作正常。

这里的记录是我正在做的不起作用的事情:

$test_file = 'c:\\test.csv';//everybody has full control. is very large.
    if(file_exists($test_file) && is_readable($test_file)){
        $fp = fopen($test_file, 'r');
        echo var_export($fp, true);//outputs NULL. on my linux box this is a number.
        if($fp !== false){
            //do the work
            fread($fp, 10);//throws the error that $fp is not a valid file handle
        }
    }

我所包含的东西必须以某种方式打破fopen。在没有包含的新文件中按预期工作。

2 个答案:

答案 0 :(得分:1)

感谢您的回复。你是对的,因为它不是任何配置问题。问题必须是我的一个dll或我包含的文件之一。我刚刚尝试了相同的代码,这些代码在没有任何包含的情况下无法在新文件中工作,我禁用了我的自定义库并且它工作正常。

这里的记录是我正在做的不起作用的事情:

$test_file = 'c:\\test.csv';//everybody has full control. is very large.
    if(file_exists($test_file) && is_readable($test_file)){
        $fp = fopen($test_file, 'r');
        echo var_export($fp, true);//outputs NULL. on my linux box this is a number.
        if($fp !== false){
            //do the work
            fread($fp, 10);//throws the error that $fp is not a valid file handle
        }
    }

我所包含的东西必须以某种方式打破fopen。在没有包含的新文件中按预期工作。

答案 1 :(得分:0)

所以我们假设您正在使用这种代码:

$fp = fopen( "my_file.txt", "r" );
$contents = fread($fp, filesize( "my_file.txt" ) );
fclose($fp);

我是否假设filesize()函数返回null?还可以尝试使用stat($ filename)函数来查看是否得到了一个相对完整的数组。

让我知道你的结果。