GVKun编程网logo

ubuntu – nginx – > php5-fpm:php中的错误未记录(任何地方!)(ubuntu php环境)

14

本文将为您提供关于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环境)

ubuntu – nginx – > php5-fpm:php中的错误未记录(任何地方!)(ubuntu php环境)

我试图在EC2服务器上设置PHPbb.经过一个小时左右的绝望,我发现PHPbb启动中的某一行失败了:

$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并将其设置为yes,来自doc:

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,没有错误日志

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 环境最佳实践12.04版

前文nginx + php (via php-fpm) on ubuntu 环境最佳实践大致提了ubuntu下的ngnx+php环境,但随着时间推移,旧版本组件之间维护程度的不协调问题会越来越多。 PHP 5.4带来了很多改进,以往运行环境必须的优化在5.4后都不必要了。 安装 apt-get install python

前文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

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)没有记录捕获的错误/警告

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,所以我宁愿避免这种情况.

最佳答案
我在PHP-FPM的池配置文件中使用此指令:

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)没有记录捕获的错误/警告的相关知识,请在本站进行查询。

本文标签: