2014-01-20 27 views
0

假設在Windows機器上運行以下內容,我希望在文檔根目錄中創建一個文件,但它不是。當w +被指定爲模式時,fopen不創建文件

$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變量。沒有它字符串包含反斜槓\與它字符串包含正斜槓/根據文檔,如果你不想逃避反斜槓\\你可以使用正斜線作爲窗口尊重兩個。由於dirname(__FILE__)返回未轉義的反斜槓,我正在使用str_replace修復它。 $file的內容正是我期望它們的內容,解釋文件的當前路徑附加了/swsql.bat/也在錯誤日誌中沒有錯誤。

編輯

改變$file = str_replace("\\",'/',dirname(__FILE__).'/swsql.bat');
$file = str_replace("\\",'/',dirname(__FILE__)).'/swsql.bat';固定的問題。

`

+0

你的腳本對該目錄有寫權限嗎? – TypeIA

+0

它應該,雖然我不完全確定如何檢查 – richbai90

+0

請確保'$ file'擁有您認爲它的值。儘管我不得不承認我從來沒有寫過任何PHP代碼,只是閱讀它,所以我不是專家。 – TypeIA

回答

0

改變

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

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

固定的問題。