标签: php

Apache 2.4 不关闭连接

我有一个运行在带有 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 的任何默认配置)。 …

php mpm-prefork amazon-web-services apache-2.4

7
推荐指数
1
解决办法
6155
查看次数

如何以特定用户而不是任何人的身份运行 HTTPD?

目前,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 

linux php redhat httpd apache-2.2

7
推荐指数
1
解决办法
2万
查看次数

将自签名证书添加到 Windows 中 cURL 中的受信任证书?

我已根据此页面上的说明创建了一个自签名证书,并已安装它并且它似乎都可以正常工作,但现在我需要cURL信任它。

由于更高版本的 cURL 不在文件中包含受信任列表.pem,因此我在此处下载了 .pem 文件,然后在中输入以下行php.ini:

curl.cainfo = "C:\xampp\php\cacert.pem"
Run Code Online (Sandbox Code Playgroud)

现在我需要知道的是如何cURL信任我的自签名证书?我不需要任何浏览器来信任它,只需 cURL。

php ssl ssl-certificate curl

7
推荐指数
1
解决办法
2万
查看次数

从上游读取响应标头时,nginx recv() 失败(104:对等连接重置)

我最近将我的 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)

linux php nginx magento

7
推荐指数
1
解决办法
4万
查看次数

无法在 Ubuntu 14.04 上使用 Apache 2.4 启用 mpm_prefork

我正在 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 apache-2.4 ubuntu-14.04

7
推荐指数
1
解决办法
4万
查看次数

PHP7 中的 PECL 命令错误

我已将 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 …

ubuntu php pecl php7

7
推荐指数
2
解决办法
1万
查看次数

PHP 在 Ubuntu 运行无人值守升级会话后抛出服务器错误 - 有什么方法可以确定原因吗?

我们刚刚在我们的一个网络服务器上发生了事件。几个 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)

networking domain-name-system ubuntu php

7
推荐指数
1
解决办法
1066
查看次数

ALPN,服务器不同意协议是什么意思?

在 curl 中使用各种调用时,我经常看到这一点。

我不确定它是否是我的某些退货导致错误 400 的根本原因,但作为一个新手只是好奇比什么都重要。

php http-status-code-404 apache-2.4 ubuntu-16.04 alpn

7
推荐指数
1
解决办法
1万
查看次数

在 Centos 上将 PHP 7.0 升级到 7.2

我有一台运行 PHP 7.0 的生产服务器,我想升级到 7.2。

我还没有在网上找到任何表明 PHP7.0 和 7.2 可以共存的信息。什么是正确的程序?只需删除所有 php70w* 软件包并安装所有 php72w 软件包?

这是一个生产服务器,错误不能导致它失败。

谢谢。

php centos

7
推荐指数
1
解决办法
3万
查看次数

使用 Nginx 在 PHP-FPM 中获取环境变量

我定义一些环境变量,像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 nginx environment-variables php-fpm env

7
推荐指数
1
解决办法
1万
查看次数