我有一个运行在带有 CentOS 的 AWS 微型实例上的Apache 2.4网络服务器。
apache 正在运行带有 prefork MPM 模块的 PHP。
服务器通过 Amazon 负载均衡器访问,该负载均衡器具有健康检查功能,每 60 秒尝试访问服务器的 index.php 网页。
问题是在 1-2 天后,Apache 以某种方式使用 index.php 页面达到了 256 个打开的进程并给出以下错误:
[Sun Sep 08 02:13:00.356051 2013] [mpm_prefork:error] [pid 1201] (12)Cannot allocate memory: AH00159: fork: Unable to fork new process
[Sun Sep 08 02:13:13.656694 2013] [mpm_prefork:error] [pid 1201] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
Run Code Online (Sandbox Code Playgroud)
通常发生这种情况时,不再接受新的 http 连接。
Apache 可能不会关闭负载均衡器的所有连接。
我们有另一台使用 Apache 2.2 的服务器,它没有这个问题,所以问题可能出在 2.4 版本上,它与 2.2 有很大不同(我们没有更改 Apache 的任何默认配置)。 …
目前,top向我展示了几乎所有httpd进程都由nobody. “几乎”,因为其中 2 个由root.
如果我有用户说:dartagnan, porthos, aramis,athos作为上述用户分别运行 httpd ,我如何才能做到这一点?
我希望在我跑步时看到这样的事情top:
PID 用户命令 第1234回 12 端口 /usr/local/apache/bin/httpd -k start -DSSL 342 aramis /usr/local/apache/bin/httpd -k 开始 -DSSL 214 athos /usr/local/apache/bin/httpd -k start -DSSL
============>这是我目前有什么我DONT喜欢看:
PID 用户命令 第1234回 12 没有人 /usr/local/apache/bin/httpd -k 开始 -DSSL 第342话 第214回 244 root /usr/local/apache/bin/httpd -k start -DSSL 334 root /usr/local/apache/bin/httpd -k start -DSSL
我已根据此页面上的说明创建了一个自签名证书,并已安装它并且它似乎都可以正常工作,但现在我需要cURL信任它。
由于更高版本的 cURL 不在文件中包含受信任列表.pem,因此我在此处下载了 .pem 文件,然后在中输入以下行php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
Run Code Online (Sandbox Code Playgroud)
现在我需要知道的是如何cURL信任我的自签名证书?我不需要任何浏览器来信任它,只需 cURL。
我最近将我的 magento 从 1.5 升级到 1.9,当我将某个产品添加到购物篮时,我开始收到此错误:502 Bad Gateway
var/log/文件夹中没有日志条目:

因此,我查看了我的 nginx 错误,并在nginx-errors.log 中发现了以下条目:
2015/04/09 10:58:03 [error] 15208#0: *3 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.xxx.xxx.xxx, server: dev.my-domain.co.uk, request: "POST /checkout/cart/add/uenc/aHR0cDovL2Rldi5zYWx2ZW8uY28udWsvdGludGktYmF0aC1wYWludGluZy1zb2FwLTcwbWwuaHRtbD9fX19TSUQ9VQ,,/product/15066/form_key/eYLc3lQ35BSrk6Pa/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fcgi-www-data.sock:", host: "dev.my-domain.co.uk", referrer: "http://dev.my-domain.co.uk/tinti-bath-painting-soap-70ml.html"
2015/04/09 11:04:42 [error] 15208#0: *13 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.xxx.xxx.xxx, server: dev.my-domain.co.uk, request: "POST /checkout/cart/add/uenc/aHR0cDovL2Rldi5zYWx2ZW8uY28udWsvdGludGktYmF0aC1wYWludGluZy1zb2FwLTcwbWwuaHRtbD9fX19TSUQ9VQ,,/product/15066/form_key/eYLc3lQ35BSrk6Pa/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fcgi-www-data.sock:", host: "dev.my-domain.co.uk", referrer: …Run Code Online (Sandbox Code Playgroud) 我正在 Ubuntu 14.04 上安装 PHP 5.4 和 Apache 2.4。Php 5.4 在 apt-get 上不可用,所以我必须从源代码安装它。我已经安装
apache2-prefork-dev
apache2-mpm-prefork
Run Code Online (Sandbox Code Playgroud)
我配置了 PHP
./configure --with-apxs2=/usr/bin/apxs2 --with-mysql --with-curl
Run Code Online (Sandbox Code Playgroud)
然后我构建并安装。我将此行添加到/etc/apache2/apache2.conf:
LoadModule mpm_event_module /usr/lib/apache2/modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so
AddType application/x-http-php .php
Run Code Online (Sandbox Code Playgroud)
当我尝试重新启动 Apache 时,出现此错误:
module mpm_event_module is already loaded, skipping
Run Code Online (Sandbox Code Playgroud)
我在 .conf 文件中搜索,但该模块之前没有加载到那里。编辑:
正如@Andrew Schulman 的回答,我可以在
/etc/apache2/mods-available/mpm_event.load
Run Code Online (Sandbox Code Playgroud)
当我跑
a2enmod mpm_event
Run Code Online (Sandbox Code Playgroud)
我明白了:
Considering conflict mpm_worker for mpm_event:
Considering conflict mpm_prefork for mpm_event:
Considering conflict mpm_itk for mpm_event:
Run Code Online (Sandbox Code Playgroud)
我该如何解决冲突?
编辑2:
我用了
a2dismod
Run Code Online (Sandbox Code Playgroud)
在
mpm_event_module
Run Code Online (Sandbox Code Playgroud)
并加载了 mpm_prefork_module。Apache 重新启动正常,但是当我尝试运行时
a2enmod mpm_prefork_module
Run Code Online (Sandbox Code Playgroud)
我明白了:
ERROR: Module …Run Code Online (Sandbox Code Playgroud) 我已将 php 升级到第 7 版,现在我在使用 pecl 命令时遇到了问题。当我运行时,sudo pecl install mongo我得到一长串错误:
Warning: Invalid argument supplied for foreach() in Command.php on line 249
Warning: Invalid argument supplied for foreach() in /usr/share/php/PEAR/Command.php on line 249
Warning: Invalid argument supplied for foreach() in Command.php on line 249
Warning: Invalid argument supplied for foreach() in /usr/share/php/PEAR/Command.php on line 249
Warning: Invalid argument supplied for foreach() in Command.php on line 249
Warning: Invalid argument supplied for foreach() in /usr/share/php/PEAR/Command.php on line 249
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个问题的解决方案:PECL …
我们刚刚在我们的一个网络服务器上发生了事件。几个 PHP 应用程序在其上运行并开始吐出以下错误消息:
php_network_getaddresses: getaddrinfo failed: Name or service not known
此消息似乎与网络/DNS 相关。服务器日志清楚地表明,大约在发生第一个错误的时候,Ubuntu 启动了一个unattended-upgrades会话。我将附上dpkg.log下面的输出。
我们使用外部数据库服务器。
我们决定重新启动网络服务器,解决了问题,但现在的问题是:
有什么方法可以找出此问题的根本原因,以便将来防止它?
unattended-upgrades.log 的输出:
2017-03-21 15:01:56,279 INFO Starting unattended upgrades script
2017-03-21 15:01:56,279 INFO Allowed origins are: ['o=Ubuntu,a=xenial', 'o=Ubuntu,a=xenial-security']
2017-03-21 15:02:03,365 INFO Packages that will be upgraded: libc-bin libc-dev-bin libc6 libc6-dev libfreetype6 locales multiarch-support
2017-03-21 15:02:03,365 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log'
2017-03-21 15:02:12,851 INFO All upgrades installed
Run Code Online (Sandbox Code Playgroud)
dpkg.log 的输出:
2017-03-21 15:02:03 startup archives unpack
2017-03-21 15:02:03 upgrade libc6-dev:amd64 …Run Code Online (Sandbox Code Playgroud) 在 curl 中使用各种调用时,我经常看到这一点。
我不确定它是否是我的某些退货导致错误 400 的根本原因,但作为一个新手只是好奇比什么都重要。
我有一台运行 PHP 7.0 的生产服务器,我想升级到 7.2。
我还没有在网上找到任何表明 PHP7.0 和 7.2 可以共存的信息。什么是正确的程序?只需删除所有 php70w* 软件包并安装所有 php72w 软件包?
这是一个生产服务器,错误不能导致它失败。
谢谢。
我定义一些环境变量,像APP_ENV在我的/etc/environment文件中,在我的ArchLinux的。
如果我输入printenv,我会看到它们。
我创建了这个简单的测试文件,名为… test.php
<?php
var_dump(getenv('APP_ENV'));
var_dump(getenv());
Run Code Online (Sandbox Code Playgroud)
如果我运行php test.php,一切正常,我会看到我的 ENV 变量。
但是当我尝试通过 HTTP 访问文件时……我的环境中什么也没有!
当然,我已经改变了/etc/php/php-fpm.d/www.conf设置clear_env = no
这些是受影响的行:
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
; pool configuration are added.
; Setting to "no" will make all environment variables available to PHP code
; via getenv(), $_ENV …Run Code Online (Sandbox Code Playgroud) php ×10
apache-2.4 ×3
linux ×2
nginx ×2
ubuntu ×2
alpn ×1
apache-2.2 ×1
centos ×1
curl ×1
env ×1
httpd ×1
magento ×1
mpm-prefork ×1
networking ×1
pecl ×1
php-fpm ×1
php7 ×1
redhat ×1
ssl ×1
ubuntu-14.04 ×1
ubuntu-16.04 ×1