3

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

我已经将文件和所有封闭文件夹的完全控制权授予所有人,但我仍然得到 NULL 而不是文件指针。

我在 php 5.2.9、5.2.13 和 5.3.1 上试过这个,效果相同。我浏览了 php.ini 文件,寻找破坏它的东西;我什至尝试从 fopen 工作的 linux 机器中删除和使用基本的 ini 文件,但仍然没有。

我知道我必须在更改我的 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。在没有包含的新文件中按预期工作。

4

2 回答 2

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。在没有包含的新文件中按预期工作。

于 2010-03-11T17:12:18.337 回答
0

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

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

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

让我知道你的结果。

于 2010-03-11T16:49:36.380 回答