当w +指定为模式时,fopen不创建文件

时间:2014-01-20 21:12:10

标签: php fopen

如果在Windows机器上运行以下,我希望在文档根目录中创建一个文件,但它不是。

$file = str_replace("\\",'/',dirname(__FILE__).'/swsql.bat');
$handle = fopen($file,'w+b'); //using binary mode for windows
fwrite($handle,'test');
fclose($handle);

我正在关注此处提供的文档http://www.php.net/manual/en/function.fopen.php,因为我正在处理的项目是运行php版本4,所以我无法使用file_put_contents()。我也试过它而没有指定二进制模式并获得相同的结果。

我使用echo输出带有和不带str_replace的$ file变量。没有它,字符串包含反斜杠\,如果您不想转义反斜杠/,根据文档,字符串包含正斜杠\\,因为Windows可以使用正斜杠。由于dirname(__FILE__)返回未转义的反斜杠,我正在使用str_replace修复它。 $file的内容正是我所期望的,被解释的文件的当前路径附加/swsql.bat/。错误日志中也没有错误。

修改

$file = str_replace("\\",'/',dirname(__FILE__).'/swsql.bat');更改为 $file = str_replace("\\",'/',dirname(__FILE__)).'/swsql.bat';解决了这个问题。

`

1 个答案:

答案 0 :(得分:0)

更改

$file = str_replace("\\",'/',dirname(__FILE__).'/swsql.bat'); 

$file = str_replace("\\",'/',dirname(__FILE__)).'/swsql.bat'; 

解决了这个问题。