我正在尝试处理一些处理一些RESTful URI的PHP脚本,并知道哪些格式的最终用户需要数据,我把它当作URI中的扩展来处理,例如: example.com/foo/bar.json?q=x&a=y –> data in ajax format example.org/foo/bar.xml?q=x&a=y –> data in xml format 我在我的开发机器上使用了Apache httpd + modphp,它工作的很好,但是舞台服务器使用CentOS + Nginx + PHP。 在那里,nginx拦截并尝试处理一个静态json文件并返回404。 如何防止Nginx处理某些文件types(例如,json,xml)并让PHP处理这些? 我的Nginxconfiguration: server { # listen [::]:443 ssl http2 accept_filter=dataready; # for FreeBSD # listen 443 ssl http2 accept_filter=dataready; # for FreeBSD # listen [::]:443 ssl http2 deferred; # for Linux # […]
我在DigitalOcean有一个服务器,它主要用来运行一些低stream量的WP网站,90%的网站运行良好。 但! 其中一个网站,不断有5-20(取决于我把最大的孩子),每个进程正在吃5%-20%CPU的任何地方,可以在这里看到 。 它在一天中的所有时间都保持这种状态,但是我怀疑它们会变得越来越活跃。 重新启动php-fpm或其他任何服务都无济于事 – 我已经查看了日志中找不到任何我认为会导致此问题的内容。 我在整个服务器上还是很新的东西,我不得不说我不确定是什么原因造成的。 但如果有人能指引我正确的方向,我将不胜感激! 一点信息: DigitalOcean Droplet (4gb ram, 2 CPUs) CentOS 7.3.1611 x64 nginx / php-fpm Running WP sites (6-7 sites) PHP-fpm.conf listen = 127.0.0.1:9001 listen.allowed_clients = 127.0.0.1 user = int group = int pm = dynamic pm.max_children = 10 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = […]
我有一个nginx服务器的一些请求是慢的,因此可以饱和一个PHP的FPM池。 我不介意这些请求是否被删除,更重要的是它们不会影响正常的请求。 我认为我可以为这些请求创build另一个有限的PHP-FPM池,我已经完成了这个任务,但是我正在努力地处理nginx的一些事情。 我目前的configuration看起来像… location ~ \.php$ { include snippets/fastcgi-php.conf; # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.0-fpm.sock; } 我想要发生的是,对某些显式path(如/test/update.php任何请求转到另一个具有fastcgi_pass unix:/run/php/php7.0-fpm-secondary.sock;地址的池fastcgi_pass unix:/run/php/php7.0-fpm-secondary.sock; 。 这可能吗?
我正在使用Alpine / Nginx / PHP-FPM 7.1.2。 我无法得到PHP错误的显示或输出到我的Nginx服务器块的error.log 。 access.log似乎工作得很好。 我在www.conf的底部find了/usr/local/etc/php-fpm.d/ php_flag[display_errors] = on php_admin_value[error_log] = /var/log/fpm-php.www.log php_admin_flag[log_errors] = on 在Docker日志中没有任何东西,并且/var/log/fpm-php.www.log也没有错误… 我需要做什么来显示和logging错误? 我也试过错误日志: /proc/self/fd/2
我注意到,php-fpm的configuration文件可以selecterror_log ,但我也看到php_admin_value[error_log]使用。 有什么不同? 此外,PHP手册说log_errors标志“ 告诉脚本错误消息是否应该logging到服务器的错误日志或error_log ”,但我不知道如何解释。 log_errors = off是否意味着没有错误日志logging,或者错误将会转到apache / nginx的日志(而不是由php-fpmlogging)?
我的nginx + php 7.0 FPM有问题。 Chrome仍在阻止“等待可用插槽镶边”。 如果我重新启动PHP,我可以login到我的应用程序,并在“等待可用套接字铬”后。 我检查了/var/log/php7.0-fpm.log: [12-Mar-2017 20:48:29] NOTICE: fpm is running, pid 1088 [12-Mar-2017 20:48:29] NOTICE: ready to handle connections [12-Mar-2017 20:48:29] NOTICE: systemd monitor interval set to 10000ms [12-Mar-2017 21:15:52] NOTICE: fpm is running, pid 1121 [12-Mar-2017 21:15:52] NOTICE: ready to handle connections [12-Mar-2017 21:15:52] NOTICE: systemd monitor interval set to […]
我一直在我的php-fpm日志中收到以下错误。 我已阅读并尝试了一些类似的问题在serverfault.com上可用但问题没有解决。 [11-Apr-2017 08:33:27] ERROR: unable to read what child say: Bad file descriptor (9) [11-Apr-2017 09:49:26] ERROR: unable to read what child say: Bad file descriptor (9) [11-Apr-2017 09:49:26] ERROR: unable to read what child say: Bad file descriptor (9) [11-Apr-2017 09:56:11] ERROR: unable to read what child say: Bad file descriptor (9) [11-Apr-2017 […]
我有一个运行在App Engine中的webserver容器,它提供了一个REST API。 我试图去一个相对标准的实现 – nginx + PHP-FPM使用TCP套接字(我没有得到一个unix套接字工作出于某种原因)。 数据库连接也是通过Google Cloud VPN运行的TCP套接字。 问题 我在API上获得了〜25%的可用性。 在最大时间(App Engine的nginx代理设置为60秒)之后,通常请求将会发生504 Gateway Timeout 。 有时候,如果PHP-FPM超时( request_terminate_timeout ),将会出现502 Bad Gateway 。 我试图找出这是否是App Engine nginxconfiguration不当,我的nginx或我的PHP-FPMconfiguration。 Nginx应该closures套接字或者重用它们,但是它似乎并没有这样做。 客户端 当我siege任何给定的端点(25个用户)几分钟,我看到: HTTP/1.1 504 60.88 secs: 176 bytes ==> GET /path/to/rest …15 lines… HTTP/1.1 504 61.23 secs: 176 bytes ==> GET /path/to/rest HTTP/1.1 200 57.54 secs: 13143 […]
我已经设置了我们的服务器,以便每个站点都有自己的用户。 这似乎是做到这一点(也是最安全的)的标准方式。 我似乎达到了某种限制。 php-fpm.conf文件清楚地说: “FPM可以处理的池的数目没有限制,你的系统会告诉你:)” 。 但是,这个服务最多只能在一个人静静地放下之前启动最多9个池。 这是我的系统让我知道吗? (没有错误和充足的内存)。 包含使用默认设置(Debian)的池:include = / etc / php / 7.0 / fpm / pool.d / * .conf 基本上,这些将被加载9,不再有错误。 如果我在这个文件夹中重命名文件,使它们按不同的顺序排列,将会启动不同的9个池(即,它加载文件夹中的第一个或最后一个9)。 我的池configuration示例是: [user1] user = user1 group = user1 listen = /run/php/php7.0-fpm-user1.sock listen.owner = www-data listen.group = www-data pm = ondemand pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 […]
我试图在Debian 9上设置Apache和FPM,就像我们之前用Debian 7和8完成的一样。我相信,在Apache 2.4中mod_fastcgi被赞成mod_proxy_fcgi的弃用,并且随后将其从Debian 9 apt repos,我一直无法完成我们以前的设置。 基本上,我们使用FPM来在单个服务器(登台/开发服务器)上对多个站点进行沙箱。 最终的结果是,每个站点都拥有并分组到一个用户,FPM在该特定用户的进程下运行该站点。 以下是我们使用的Apache vhost示例: FastCgiExternalServer /home/siteusername/www/php5-fcgi -socket /tmp/php5-fpm-siteusername.sock -pass-header Authorization <VirtualHost *:80> DocumentRoot /home/username/www/domain.com/public_html/ ServerName www.domain.com <Directory /home/siteusername/www/domain.com/public_html/> AllowOverride all </Directory> <Directory /home/siteusername/www/> Require all granted AllowOverride all </Directory> AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /home/siteusername/www/php5-fcgi <ifModule mod_headers.c> Header set X-Robots-Tag "noindex" </ifModule> </VirtualHost> 这里是我们使用的一个FPMconfiguration的例子: [siteusername] […]