本文将为您提供关于ubuntu–nginx–>php5-fpm:php中的错误未记录(任何地方!)的详细介绍,我们还将为您解释ubuntuphp环境的相关知识,同时,我们还将为您提供关于Dockerp
本文将为您提供关于ubuntu – nginx – > php5-fpm:php中的错误未记录(任何地方!)的详细介绍,我们还将为您解释ubuntu php环境的相关知识,同时,我们还将为您提供关于Docker php-fpm / nginx设置:php-fpm空白500,没有错误日志、Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版、Nginx + php5-fpm中的错误502、Nginx FastCGI PHP(php-fpm)没有记录捕获的错误/警告的实用信息。
本文目录一览:- ubuntu – nginx – > php5-fpm:php中的错误未记录(任何地方!)(ubuntu php环境)
- Docker php-fpm / nginx设置:php-fpm空白500,没有错误日志
- Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版
- Nginx + php5-fpm中的错误502
- Nginx FastCGI PHP(php-fpm)没有记录捕获的错误/警告
ubuntu – nginx – > php5-fpm:php中的错误未记录(任何地方!)(ubuntu php环境)
$db->sql_connect($dbhost,$dbuser,$dbpasswd,$dbname,$dbport,false,defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);
轻松修复,我需要正确配置我的数据库属性.
但是,要发现我必须在PHP应用程序的前几个文件中逐块插入echo’1’语句.在echo语句之前,当PHP出错时,我只会得到一个状态为200的空白页面.
我在FPM的PHP.ini中打开了log_errors和display_errors,但显然他们对这种特殊类型的错误没有做任何事情.
/ var / log / syslog,/ var / log / Nginx / *,/ var / log / PHP_fpm.log或Nginx站点的错误日志中没有关于错误的日志.
所以,我的问题:为什么实际的错误(来自sql_connect)没有被记录在任何地方? (或者,如果它被记录,在哪里?)
解决方法
catch_workers_output - Redirect workers' stdout and stderr into main error log. If not set,they will be redirected to /dev/null,according to FastCGI specs. Values "yes" or "no"
编辑:
还检查你有
PHP_flag[display_errors] = on
和/或
PHP_admin_flag[log_errors] = true
Docker php-fpm / nginx设置:php-fpm空白500,没有错误日志
项目的Git回购: https : //github.com/tombusby/docker-laravel-experiments (写作时的HEAD是823fd22)。
这是我的docker-compose.yml:
Nginx: image: Nginx:stable volumes: - ./Nginx.conf:/etc/Nginx/conf.d/default.conf:ro volumes_from: - PHP links: - PHP:PHP ports: - 80:80 PHP: image: PHP:5.6-fpm volumes: - ./src:/var/www/html expose: - 9000
进入src /我创build了一个新的laravel项目。 这一切都正常工作,如果我换了一个基本的echo "hello world"; index.PHP echo "hello world"; 如果我使用echo "called";exit(); 我可以确定laravel的index.PHP部分是否被执行。
它死于第53行:
当我使用命名pipe道作为日志文件并删除并重新创buildpipe道时,Nginx会发生什么?
production.log空的Rails 4 / Capistrano / Passenger / Nginx服务器(数字海洋)
Windows服务正在运行但事件日志无法正常工作
如何通过uwsgi强制应用程序的标准输出日志?
每次按下某个键(不pipe哪个窗口都有焦点),函数callback?
$response = $kernel->handle( $request = IlluminateHttpRequest::capture() );
我不知道为什么会发生这种情况,我已经尝试使用docker exec -it <cid> bash来查看我的PHP-fpm容器中是否有错误日志。 所有日志都被redirect到stderr / stdout(由docker收集)。
以下是Docker收集的输出:
PHP_1 | 172.17.0.3 - 06/May/2016:12:09:34 +0000 "GET /index.PHP" 500 Nginx_1 | 192.168.99.1 - - [06/May/2016:12:09:34 +0000] "GET /index.PHP HTTP/1.1" 500 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/50.0.2661.94 Safari/537.36" "-"
正如你所看到的,“500”几乎没有什么能帮我弄清楚为什么会出现错误,但是我找不到任何获取堆栈跟踪的方法,或者像apache的PHP扩展所产生的正确的错误日志。
为什么Django向我发送无效的HTTP_HOST头与我的服务器IP?
如何在Linux上loggingcpu,内存和带宽?
如何在Perl中处理来自连续过程pipe道的更新
为AWS服务器(非EC2实例)configurationWindows服务器的CloudWatch日志监视
测量来自Apache访问日志的stream量
根据我们在freenode上的## PHP的讨论…
你的问题是,PHP.ini设置“log_errors”设置为关。
你的选择是:
在PHP.ini中设置log_errors = On
在你的池配置中设置PHP_admin_flag [log_errors] = On(对于基于PHP:5.6-fpm docker容器PHP:5.6-fpm ,位于/usr/local/etc/PHP-fpm.conf文件中)
或者可能在.user.ini中设置log_errors = On(PHP的per-dir配置,类似于.htaccess)
正如我可以看到你的Mac正在运行的请求,Mac上建立的码头环境也? 如果可以的话,通过在PHP-fpm容器上运行bash,试图写入暴露的卷? (容器上的/var/www/html )
Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版
前文
前文nginx + php (via php-fpm) on ubuntu 环境最佳实践大致提了ubuntu下的ngnx+php环境,但随着时间推移,旧版本组件之间维护程度的不协调问题会越来越多。
PHP 5.4带来了很多改进,以往运行环境必须的优化在5.4后都不必要了。
安装
apt-get install python-software-properties add-apt-repository ppa:ondrej/php5 apt-get update apt-get install nginx apt-get install php5-cgi php5-mysql php5-fpm php5-curl php5-mcrypt php-pear php5-gd php-apc service nginx start service php5-fpm start
配置
Nginx
upstream php { server unix:/var/run/php-fpm/php-fpm.sock; #server 127.0.0.1:9000; } server { listen 80; index index.html index.htm index.php; server_name site.com; root /srv/http/pt-sites/wordpress; client_max_body_size 32m; client_body_buffer_size 128k; server_tokens off; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include fastcgi.conf; #fastcgi_param HTTPS on; fastcgi_intercept_errors on; #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #Ubuntu 版本的nginx不需要这句,但Fedora或者可能其他发行版的自带没有定义,会返回空白的php,需要这句。 fastcgi_pass php; } }
PHP
设置timezone
sed -i ''/;date.timezone/adate.timezone = "Asia/Shanghai"\ndate.default_latitude = 31.5167\ndate.default_longitude = 121.4500'' /etc/php5/fpm/php.ini
另可参考(php.ini):
post_max_size = 16M upload_max_filesize = 16M
FPM
php5-fpm默认参数启动的服务器还是比较耗资源的,如果环境不充裕(如512内存以下的VPS),可以做下配置。
立即学习“PHP免费学习笔记(深入)”;
这个包的fpm的默认配置文件是/etc/php5/fpm/main.conf,但对子进程的配置是在其包含的/etc/php5/fpm/pool.d/目录内,里面有个www.conf,可以对以下的参数做以下修改:
pm = dynamic ;动态管理php-fpm的子进程 pm.max_children = 5 ;最多的时候开不超过5个 pm.start_servers = 2 ;启动服务时候开2个 pm.min_spare_servers = 2 ;空闲时候最少留2个 pm.max_spare_servers = 5 ;最多留5个 pm.max_requests = 300 ;每个子进程最多处理300个请求就退出换新的子进程。
按需调整这些参数可以达到最佳动态分配资源的效果。
如果在一台机器上部署多个应用,可以根据访问量,在pool.d中为各个应用配置不同的分配模式,能有效起到安全隔离效果。(注意pool.d内的文件,除了文件名不一样,里面定义的中括号[Name]也需要不一样。)
Fastcgi
Fastcgi和nginx的通信参数,可做以下配置:
加入到:/etc/nginx/fastcgi_params
fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on;
php-apc
因为PHP的设计问题,opcode缓冲对大流量APP来说是必不可少的,APC是不错的选择。但是默认参数似乎效果有问题(通过munin监控发现没有设置一下参数,几乎没有使用system-cache,统统都是miss,一加上就好了,估计是BUG)。
加入到 /etc/php5/conf.d/20-apc.ini
apc.enabled = 1 apc.shm_segments = 1 apc.shm_size = 64 apc.ttl=7200 apc.user_ttl=7200
参考:Nginx and PHP-FPM Configuration and Optimizing Tips and Tricks
原文地址:Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版, 感谢原作者分享。
Nginx + php5-fpm中的错误502
我的主题有误。服务器负载不高:大约15%的CPU,有几个Gb的内存,HDD并不忙。但是错误502大约会引发3%的情况。
程序:Debian 6,nginx / 0.7.62,php5-fpm(5.3.3-1)。
在nginx的error.log中是此错误:
connect() to unix:/var/run/php5-fpm.sock failed
php5-fpm的状态通常是这样的:
accepted conn: 41680
pool: www
process manager: dynamic
idle processes: 258
active processes: 1
total processes: 259
我认为,这意味着负载不高。
我增加了积压参数:在sysctl中-net.core.somaxconn = 5000,在php-fpm池中-listen.backlog
=5000。没有效果。
我引用一个配置:
/etc/nginx/nginx.conf
user www-data;
worker_processes 8;
timer_resolution 100ms;
worker_rlimit_nofile 20240;
worker_priority -5;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 2048;
use epoll;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_min_length 1100;
gzip_buffers 64 8k;
gzip_comp_level 3;
gzip_http_version 1.1;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/css;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
client_max_body_size 100M;
server_tokens off;
}
/ etc / nginx / php_location
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_buffers 256 128k;
#fastcgi_buffer_size 16k;
#fastcgi_busy_buffers_size 256k;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
include fastcgi_params;
php-fpm池
[www]
listen = /var/run/php5-fpm.sock
listen.backlog = 5000
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
user = www-data
group = www-data
pm = dynamic
pm.max_children = 1024
pm.start_servers = 64
pm.min_spare_servers = 64
pm.max_spare_servers = 128
pm.max_requests = 32000
pm.status_path = /system/php5-fpm-status
slowlog = /var/www/log/php-fpm.log.slow
chdir = /var/www
如何优化该系统并使之使用所有服务器资源?
PS。对不起,我的英语不好。
Nginx FastCGI PHP(php-fpm)没有记录捕获的错误/警告
FastCGI不希望正确记录PHP错误.嗯,这并不完全正确:它记录错误很好,有点摆弄;它只是不会记录任何其他内容,例如警告.
臭名昭着的FastCGI – > Nginx日志错误不一定是个问题.来自PHP-fpm的错误和警告会直接转到Nginx – 但前提是它们没有被捕获.也就是说,如果set_error_handler成功拦截错误,则不会附加任何日志条目.这意味着我可以看到解析错误,但这就是它.
PHP-fpm本身并不记录PHP错误(与Nginx分开),没有任何破解. PHP-fpm的实例配置文件默认包含这两行:
@H_301_9@PHP_admin_value[error_log] = /mnt/log/PHP-fpm/default.log
PHP_admin_flag[log_errors] = on
我明显改变了error_log路径.我必须添加以下行以使其实际记录任何内容:
@H_301_9@PHP_admin_value[error_reporting] = E_ALL & ~E_DEPRECATED & ~E_STRICT
版本说明:E_STRICT部分是不必要的,因为我使用的是PHP 5.3.27,但我计划在某些时候升级到5.4.使用此行,它会将错误(仅错误)记录到/mnt/log/PHP-fpm/default.log.现在,这将error_reporting设置为我在PHP.ini中设置的相同值,所以这里显然有些错误.此外,它不记录捕获的错误:行为与Nginx日志的行为相同.我尝试使用数值(22527)代替,但仍然没有运气.
我不关心条目最终在哪个日志文件中(Nginx与PHP-fpm),但我确实需要在某处记录捕获的错误.我可以尝试注入我自己的错误和异常处理程序,但这有点hackish,所以我宁愿避免这种情况.
catch_workers_output = yes
今天的关于ubuntu – nginx – > php5-fpm:php中的错误未记录(任何地方!)和ubuntu php环境的分享已经结束,谢谢您的关注,如果想了解更多关于Docker php-fpm / nginx设置:php-fpm空白500,没有错误日志、Nginx + PHP (via php-fpm) on Ubuntu 环境最佳实践12.04版、Nginx + php5-fpm中的错误502、Nginx FastCGI PHP(php-fpm)没有记录捕获的错误/警告的相关知识,请在本站进行查询。
本文标签: