使用php和apache意外重置服务器

使用php和apache意外重置服务器,php,mysql,apache,debugging,Php,Mysql,Apache,Debugging,我有一个与数据库交互的应用程序。网页突然偶尔会显示我的Web浏览器中出现服务器连接重置错误。更令人惊讶的是,访问localhost页面会触发avast上的警报 如果我使用Ctrl+R刷新页面,这种情况偶尔会发生。PHP没有显示任何错误消息,而且服务器似乎比平常花费更多的时间来响应 我将wamp与Apache2.4、PHP5.4.3一起使用。我不知道从哪里开始调试或者问题出在哪里 [Sun May 13 13:01:14 2012] [warn] Init: Session Cache is no

我有一个与数据库交互的应用程序。网页突然偶尔会显示我的Web浏览器中出现
服务器连接重置
错误。更令人惊讶的是,访问
localhost
页面会触发avast上的警报

如果我使用
Ctrl+R
刷新页面,这种情况偶尔会发生。PHP没有显示任何错误消息,而且服务器似乎比平常花费更多的时间来响应

我将wamp与Apache2.4、PHP5.4.3一起使用。我不知道从哪里开始调试或者问题出在哪里

[Sun May 13 13:01:14 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun May 13 13:01:14 2012] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8x configured -- resuming normal operations
[Sun May 13 13:01:14 2012] [notice] Server built: May 13 2012 12:51:11
[Sun May 13 13:01:14 2012] [notice] Parent: Created child process 3660
Apache server interrupted...
arn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun May 13 13:01:15 2012] [notice] Child 3660: Child process is running
[Sun May 13 13:01:15 2012] [notice] Child 3660: Acquired the start mutex.
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting 64 worker threads.
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting thread to listen on port 80.
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting thread to listen on port 80.
[Sun May 13 13:01:28 2012] [notice] Parent: Received shutdown signal -- Shutting down the server.
[Sun May 13 13:01:28 2012] [notice] Child 3660: Exit event signaled. Child process is ending.
[Sun May 13 13:01:29 2012] [notice] Child 3660: Released the start mutex
[Sun May 13 13:01:30 2012] [notice] Child 3660: All worker threads have exited.
[Sun May 13 13:01:30 2012] [notice] Child 3660: Child process is exiting
[Sun May 13 13:01:30 2012] [notice] Parent: Child process exited successfully.
更新:

当“连接请求”发生时,如果是use
cachegrind
则显示方法调用堆栈的部分列表。意味着它不会运行所有代码。它显示了一些require_once调用,并且它是。下次如果我尝试获取页面,页面将执行并显示整个调用堆栈

当“连接请求发生”时,它会显示

18 different functions called in milliseconds (1 runs, 18 shown)
重试后

220 different functions called in 329 milliseconds (2 runs, 220 shown)

我不知道为什么它显示出2分。而且执行页面也需要更多的时间。在它完成之前不到100毫秒。

要通过PHP重新启动Apache,请在PHP中使用以下代码

exec('/etc/init.d/httpd graceful');

还有,看看。。。并更改httpd的路径

将apachelisten端口从80更改为8080
文件
httpd.conf
,将
listen 80
更改为
listen 8080
,然后重新启动apache

重新尝试暂时禁用防病毒

可能这不是一个正确的解决方案,但为什么不尝试其他WAMP版本或可能设置正确的系统时钟呢您是否尝试过在最小配置下运行Apache?您可以禁用所有扩展和模块(包括php本身),如果web服务器能够正常工作,您可以逐个打开模块。我不知道您的环境,但您也可以尝试将工作线程数和其他值更改为最小值。我打赌这没用,但至少你会试试

  • 重新启动计算机并关闭/禁用所有正在运行的应用程序,包括防病毒应用程序,只保留最少量正在运行的应用程序。关闭所有东西,即使是那些你确信不会干扰的应用程序-你永远不知道

  • 确保PHP显示所有错误/警告:

    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    
  • 确保您查看了从PHP收到的每个警告。它可能会给你一个线索

  • 试着找出一个问题。注释您怀疑导致问题的代码块。继续评论,直到stop收到错误。然后开始取消注释,直到找到有问题的地方。通过这种方式,您可以隔离出有问题的代码,一旦看到它,您就可以理解问题

  • 添加大量将写入日志文件的语句(或只是echo)。然后,您可以分析日志文件,了解错误发生的时间点,帮助您隔离问题


  • 最终,您将找到有问题的代码块,并能够跟踪问题。希望:)

    如果您启用了mod_安全功能,请尝试禁用,看看是否会发生同样的情况。。有时,您可能会有过度警惕的mod_安全性,只会导致http失败(有时可能很简单,只需在数据库中插入带符号的数据),并且不会将任何错误写入服务器日志,因此很难进行故障排除,听起来与您所经历的类似,我会禁用mod_security重新启动服务器,并查看行为是否已停止

    看起来其他人在使用Wamp时遇到了同样的问题: 您是否已经阅读了官方论坛帖子中列举的每一点:


    您确定没有包含/要求循环吗

    这种循环会让PHP占用太多内存,而apache会自杀以避免它

    或者可能是某种404循环错误。。。 如果有时有404个错误,这种循环就会发生。以下是一个例子:

    您的布局中缺少图像,因此会触发404错误。为了显示页面,404错误会在错误页面周围添加布局,其中包含丢失的图像,这会触发另一个404错误


    希望有帮助。

    apache日志怎么说?杀毒程序中的avast是什么??天哪,那条消息说什么?@CodeMonkey是的,反病毒。它说“恶意url已被阻止”@mkjasinski它没有error@fallenAngel如果是外部库例程中的堆栈溢出错误,PHP将无法捕获该错误。它只会杀死服务器进程。请检查您是否在某个地方有无限递归。另外,如果您的服务器允许您通过调用通常需要超级用户从其内部运行的任意脚本来重新启动它,我将非常担心..)