我沒有在網上找到任何東西,我不知道爲什麼:調用上FILTER_VALIDATE_EMAIL「連接被重置」用PHP
filter_var($address, FILTER_VALIDATE_EMAIL)
導致連接被重置(至少這就是Firefox的告訴我)。服務器在FreeBSD上有PHP版本5.3.13 with Suhosin-Patch
。 在我自己的服務器上運行Debian和PHP版本5.3.3
也可以使用Suhosin進行測試,雖然我似乎記得它確實顯示過相同的行爲。
PHP手冊表明這是在PHP 5.2.0上引入的,所以它應該工作,不是嗎?
編輯:爲了更好地展示什麼失敗,我給你兩個例子,一個帶復位,其他與適當die("message");
這個例子在瀏覽器窗口輸出Before validate
:
if (function_exists('filter_var')) { //Introduced in PHP 5.2
die("Before validate");
if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
return false;
} else {
return true;
}
} else {
return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
}
的例子導致上述 「連接被重置...」:
if (function_exists('filter_var')) { //Introduced in PHP 5.2
if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
die("After validate");
return false;
} else {
die("After validate");
return true;
}
} else {
return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
}
我做不在此處獲取「驗證後」的輸出。 另外地址是一個非常容易的「[email protected]」地址,所以它甚至是有效的。
好的另一個編輯:我做了一個只運行這個函數的oneliner,並在控制檯上執行它。這是輸出:
/libexec/ld-elf.so.1: /usr/local/lib/php/20090626/filter.so: Undefined symbol "php_pcre_exec"
我把這個交給服務器管理員。從我在谷歌上發現的,一個簡單的更新可以解決它,但我將不得不等待他的答案。如果問題解決了,我會在這裏註明。在此之前,這將不得不休息,因爲我無法解決這樣的系統深層錯誤。
而如果沒有這條線工作的?請告訴我們其餘的代碼。這聽起來不太可能。 –
如果調用Joomla代碼,但使用某些die(),則會發生此問題;在函數之前和之後,我追查下來。我會在你的原始問題中準確地發佈你的意願和不會死的事情。 – javex