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