&引用;“连接已重置”;使用php对电子邮件进行过滤验证

&引用;“连接已重置”;使用php对电子邮件进行过滤验证,php,Php,我在网上找不到任何东西,也不知道为什么:打电话 filter_var($address, FILTER_VALIDATE_EMAIL) 导致连接被重置(至少Firefox是这么告诉我的)。该服务器的PHP版本为5.3.13,在FreeBSD上安装了Suhosin补丁。 在运行Debian和PHP版本5.3.3以及Suhosin的我自己的服务器上测试这一点很好,尽管我似乎记得它以前也显示了同样的行为 PHP手册指出这是在PHP5.2.0上引入的,所以它应该可以工作,不是吗 编辑:为了更好地显示失

我在网上找不到任何东西,也不知道为什么:打电话

filter_var($address, FILTER_VALIDATE_EMAIL)
导致连接被重置(至少Firefox是这么告诉我的)。该服务器的PHP版本为
5.3.13,在FreeBSD上安装了Suhosin补丁。
在运行Debian和PHP版本
5.3.3
以及Suhosin的我自己的服务器上测试这一点很好,尽管我似乎记得它以前也显示了同样的行为

PHP手册指出这是在PHP5.2.0上引入的,所以它应该可以工作,不是吗

编辑:为了更好地显示失败的内容,我向您展示了两个示例,一个是重置,另一个是正确的
die(“消息”)

此示例在浏览器窗口上验证前输出

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);
}
该示例导致前面提到的“连接已重置…”:

我没有在这里得到像“验证后”这样的输出。 此外,地址是一个非常简单的“否”-reply@domain.com“地址,所以它甚至是有效的

好的,另一个编辑:我制作了一个仅运行此函数的oneliner,并在控制台上执行它。这是输出:

/libexec/ld-elf.so.1: /usr/local/lib/php/20090626/filter.so: Undefined symbol "php_pcre_exec"
我把这个交给了服务器管理员。从我在谷歌上发现的情况来看,一个简单的更新就可以解决这个问题,但我必须等待他的回答。如果问题解决了,我会在这里指出这一点。在此之前,这将不得不停止,因为我无法修复此类系统深度错误。

在本摘要中,他们讨论了使用该标志时对segfault的修复,这是一份opensuse报告,但可能是您的安装易受其影响。您可能需要确保您的suhosin补丁至少达到与opensuse版本0.17.1对应的版本。问题是我在苏霍辛的官方网站上找不到任何相关信息。在这种情况下,freebsd从何处获取端口源

  • 2010年10月26日星期二pgajdos@novell.com
    • 使用filter\u VALIDATE\u电子邮件修复filter\u var中的“Segfault” 大量数据“[bnc#649210]
    • CVE-2010-3710.patch

如果没有那条线,它还能工作吗?请告诉我们代码的其余部分。这听起来不太可能。如果调用Joomla代码,则会出现此问题,但使用一些die();在函数之前和之后,我追踪到了这一点。我会在我最初的问题中准确地告诉你什么会死,什么不会死。谢谢你,这可能实际上是相关的。请看我上面的编辑,也许这正是修复的问题。由于我不是FreeBSD用户,我无法准确回答您的问题,但问题文件是由php5-filter-5.3.13安装的,它是由pkg_信息状态。如果您解决了此问题,请告诉我们,您永远不知道它何时可能对其他人有帮助。:)根据我的管理员一个完整的更新必须完成。旧的目录必须被完全删除(重命名),并且需要重新安装,因为旧的库挡住了去路。我会接受你的回答,因为这很可能导致问题,尽管实际的解决方案是简单、干净的重新安装。
/libexec/ld-elf.so.1: /usr/local/lib/php/20090626/filter.so: Undefined symbol "php_pcre_exec"