2013-10-15 56 views
-1
error_reporting(E_ALL); 
ini_set('display_errors','1'); 
if (file_exists('/../_config.php')) { 
    $f = fopen('/../_config.php', 'w') or die($php_errormsg); 
    fwrite($f, '<?php'); 
    fclose($f); 
} 
else { 
    echo 'file doesnt exist'; 
} 

返回:沒有fopen不寫入文件?

我檢查了_config.php文件,它是空的。 它應該包含<?php

絕對沒有錯誤&代碼根本沒有死。

是否與權限相關的問題?我在Windows 7

+1

AFAIK'/../ config.php' _cannot_ exists(根目錄下的一個級別) – Wrikken

+0

它確實存在,我只是通過向路徑添加一些文本進行測試,並且它回顯'文件不存在'。 –

+0

你的文件路徑肯定會給你帶來麻煩。 '/../_ config.php'表示「從根開始,往上一級並尋找'_config.php'」。 – 2013-10-15 21:15:49

回答

1

使用適當的文件路徑:

error_reporting(E_ALL); 
ini_set('display_errors','1'); 

$configFile = __DIR__ . '/../config.php'; 

echo $configFile, "\n"; 

if (file_exists($configFile)) { 
    $f = fopen($configFile, 'w') or die('cannot open file'); 
    fwrite($f, '<?php'); 
    fclose($f); 
} 
else { 
    echo 'file doesnt exist', "\n"; 
} 

相反的__DIR__可以使用dirname(__FILE__)但是這僅僅是必要的,過時的(死)的PHP版本。

+0

所以, 'echo $ configFile;'查看正在檢查的文件,可能是添加或刪除'/../' –

+0

現在可以工作了,謝謝。它確實寫入了文件。我需要理解爲什麼它會這樣做,當file_exists返回true與我的路徑。 –

+0

@Jony Kale:只有你在那裏寫了一些你不明白的瘋狂字符串路徑並沒有幫助。你的路徑只是代表存在的根目錄。但它不是一個文件。作爲'file_exists' cleary狀態的PHP手冊頁,它檢查一個目錄是否存在。所以你可以恭喜你自己,你已經驗證了根目錄存在:) - 簡而言之:你檢查了一些總是存在於unix系統上的東西。 :D – hakre