2009-05-20 34 views
0

我使用@fopen以「rb」模式打開文件。我在這裏打開的文件沒有錯誤運行,但如果我打開該文件使用@fopen然後它給錯誤。使用@fopen時出錯

代碼是這樣的---

$file = @fopen("xyz.com","rb") or $flag=1; 

if($flag==1) 
{ 
    mail($to, $subject, $message, $from); 
    die(); 
} 

有時它開啓了不發送任何錯誤郵件,但有時它開始給這麼多的錯誤郵件。

什麼是解決方案打開此網址,而沒有任何錯誤的郵件? PLZ的幫助!

+1

提供了錯誤messaage本身將是最有幫助 – soulmerge 2009-05-20 09:24:51

+0

我們需要您選擇接收到有任何幫助 – simon622 2009-05-20 09:29:18

+0

看到我已採取有$文件中的錯誤信息= @fopen(「xyz.com」,「rb」)或$ flag = 1; 如果url被打開,那麼$ flag不會被設置爲1,否則它會被設置爲1(參見$ file) ,只要設置爲1,就會生成郵件............即時通訊生成的郵件沒有任何具體的錯誤....即時通訊使用此代碼在許多網頁,但對於特定的網址,它會產生這些錯誤郵件.... – developer 2009-05-20 09:29:56

回答

1

如果您嘗試打開一個URL(假設您包含'xyz.com'),那麼您需要在其之前包含架構聲明。例如。 http://xyz.com,否則PHP將嘗試打開本地文件。如果您指的是本地文件,請確保在Windows上退出任何反斜槓。

但是,其他代碼示例中沒有其他內在錯誤會導致問題。 @簡單地抑制了錯誤輸出,所以它本身不會造成任何奇怪的行爲。

雖然這麼說,一個更好的方式來處理它可能是這樣做:

$file = @fopen("xyz.com","rb"); 

if(!$file) 
{ 
    mail($to, $subject, $message, $from); 
    die(); 
} 
0

順便說一下,您是在設置$標誌= 1時出現錯誤。但是如果上次發生錯誤而這次又沒有錯誤呢? (之後$標誌仍然是1)。

0

移除則fopen方法開始的「@」的人物造型,(@符號的療法存在supresses任何PHP驅動的錯誤消息)這會給你的,爲什麼PHP會認爲你不能打開該文件的解釋 - 我冒險猜測文件的路徑或文件的權限是無效的。

0

什麼是錯誤信息?沒有它,我們可以猜測這個問題。

是否在您的ini中始終允許url fopen?也許這個值覆蓋ini_set()的某個地方?

你確定,該網址是正確的,主機還活着嗎?

最後,我建議使用fsockopen代替。它提供了更靈活的遠程連接,錯誤處理以及設置連接超時的可能性。

1

嘗試使用

file_get_contents(); 

函數,而不是fopen()函數。

0

的@符號抑制錯誤,所以$標誌決不會被設置