[英]“The connection was reset” on FILTER_VALIDATE_EMAIL with php
我在網上找不到任何東西,也不知道為什么:打電話
filter_var($address, FILTER_VALIDATE_EMAIL)
導致連接被重置(至少Firefox告訴了我)。 該服務器的PHP版本為5.3.13 with Suhosin-Patch
在FreeBSD上5.3.13 with Suhosin-Patch
。 使用Suhosin在運行Debian和PHP 5.3.3
版本的我自己的服務器上對其進行測試也可以正常工作,盡管我似乎記得它之前確實顯示了相同的行為。
PHP手冊指出這是在PHP 5.2.0上引入的,因此應該可以,不是嗎?
編輯:為了更好地說明失敗的原因,我向您展示了兩個示例,一個示例帶有重置,另一個示例具有適當的die("message");
本示例Before validate
瀏覽器窗口上輸出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\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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);
}
我在這里沒有得到類似“ After validate”的輸出。 該地址也是一個非常簡單的“ no-reply@domain.com”地址,因此它甚至有效。
好的,再進行一次編輯:我制作了只運行此功能的oneliner並在控制台上執行了它。 這是輸出:
/libexec/ld-elf.so.1: /usr/local/lib/php/20090626/filter.so: Undefined symbol "php_pcre_exec"
我將其移交給服務器管理員。 根據我在google上找到的信息,可以通過簡單的更新來解決它,但是我將不得不等待他的回答。 如果問題得到解決,我將在此處進行說明。 在此之前,這將必須解決,因為我無法修復此類系統深度錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.