Articles of PHP

系统日志遭受php中的packetloss

在我们的php应用程序中,我们使用syslog调用进行日志logging,但是我们注意到系统中存在packetloss。 我们使用以下设置:Ubuntu 14.04,PHP 7.0,系统日志3.5.6。 Php根据设施和优先级将日志传输到本地系统日志服务器(通过/ dev / log),将日志传输到中央日志logging服务器。 由于心跳cron,我们监视系统中的包丢失,并且经常发现包丢失。 Strace显示数据包在php和syslog之间丢失 正常的日志调用就像这样 socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 connect(3, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 110) = -1 EPROTOTYPE (Protocol wrong type for socket) close(3) = 0 socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3 connect(3, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 110) = 0 sendto(3, "<154>Oct 31 06:12:02 Framework_L"…, 125, MSG_NOSIGNAL, NULL, 0) = 125 close(3) = […]

应用程序警报系统

现在我们正在使用loggly.com提醒我们是否发生了某些事件。 我们通过发送JSON格式的数据到他们的API并设置了警报系统来发送警报。 但loggly.com警报系统不够灵活。 例如,我们想看一个星期一12点到13点之间是否有事件发生。 Loggly警报必须设置为每天监视。 我们从BASH脚本和PHP发送数据。 你知道一个简单的警报系统,可以帮助我们吗? 我们一直在看logentries.com,但也许有一些更适合。 我们向外部服务开放,以及我们在自己的监控服务器上设置的解决scheme。 这些应用程序在Ubuntu 16.04,PHP7,MySQL和Apache上运行。

systemd php脚本只输出到systemctl状态

我试图运行一个PHP脚本24小时与systemd。 脚本的terminal输出通常是不相关的,所以我设置“StandardOutput = 0”和“StandardError = 0”,以避免千兆字节的数据混乱的日志文件。 但是当我不时地使用它时,看到这两者真是太棒了: sudo systemctl status xyz.service 我发现没有办法做到这一点 – 这就是我所拥有的: [Unit] Description=xyz.php [Service] ExecStart=/xyz.php Restart=always RestartSec=10 StandardOutput=null StandardError=null [Install] WantedBy=multi-user.target

Symfony的PHP文件在prod服务器上不起作用

我只是尝试第一次部署Symfony(3.3.5)项目,而且我遇到了一些麻烦。 MySQL被安装并运行在服务器上,Symfony可以连接到它。 Apache2和PHP也在运行。 (和简单的PHP文件像echo "hello world"按预期工作)。 我有两点: 首先:当我尝试访问http://example.com/web/app.php时,出现错误代码为500的“网页无法正常工作”(这是Chrome的错误消息)。对于任何其他URL(例如http: //example.com/web/app.php/login 。 第二:为什么我仍然必须使用/web/app.php路由(如果我不使用它,服务器显示我的Web服务器的目录资源pipe理器),而我的.htaccess文件如下所示: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ web/$1 [QSA,L] </IfModule> 而我的/etc/apache2/sites-available/example.com.conf文件是: <VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias dev.gepacte.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/example.com/public_html"> <IfModule sapi_apache2.c> php_admin_flag engine on </IfModule> <IfModule mod_php5.c> php_admin_flag engine on </IfModule> #If one […]

nginx主机服务器显示php进程吃一个循环的CPU

我在这台主机服务器上拥有root用户访问权限,这个虚拟机托pipe多个网站。 是一个Debian TurnKey虚拟服务器,使用Nginx和ISPConfig作为configuration前端。 我注意到了表演的下降,所以我做了一个顶级的-c和结果显示 9327 web7 20 0 304908 68748 46448 S 7.6 1.2 43:41.26 php-fpm: pool web7 7024 web7 20 0 305632 66556 43384 S 7.3 1.1 28:13.34 php-fpm: pool web7 7233 web7 20 0 305580 66712 43628 S 3.7 1.1 9:54.09 php-fpm: pool web7 10492 web7 20 0 305684 66856 43668 S 3.7 […]

502错误的网关错误nginx连接重置由对等

我一直在获取超时导致某些GET请求502错误的网关错误。 我已经尝试将这些行添加到我的nginx站点conf文件中: server { client_max_body_size 500M; client_header_timeout 3000; client_body_timeout 3000; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_read_timeout 3000; fastcgi_send_timeout 3000; fastcgi_connect_timeout 3000; fastcgi_buffers 128 256k; fastcgi_buffer_size 256k; } } 我也试着用以下方法调整缓冲区大小: fastcgi_buffers 256 512k; fastcgi_buffer_size 512k; fastcgi_buffers 64 128k; fastcgi_buffer_size 128k; fastcgi_buffers 32 64k; fastcgi_buffer_size 64k; 我也尝试将PHP-FPM的conf值改为: max_execution_time = 3000 […]

从Web服务器到代理服务器的连接超时

当我尝试使用php脚本连接到代理服务器时,在本地计算机上一切正常。 但是,当我在Web服务器上尝试相同的脚本时,会发生超时错误。 脚本看起来像这样: <?php $username = ‚***********'; $password = ‚*********'; $port = 22225; $session = mt_rand(); $super_proxy = ‚*********'; $curl = curl_init('http://lumtest.com/myip.json'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_PROXY, "http://$super_proxy:$port"); curl_setopt($curl, CURLOPT_PROXYUSERPWD, "$username-country-de-session-$session:$password"); $result = curl_exec($curl); curl_close($curl); if ($result) echo $result; ?> 什么是可能的障碍,阻止连接? 编辑:networking服务器ist由wint.global托pipe PHP的5.6.32 curl支持已启用SSL已启用 代理服务器来自于光照 编辑2:它看起来像连接问题发生在特定的端口。 并在其他港口消失。 我只是不知道代理服务器的端口与Web服务器的端口有什么关系

WordPress的数据库内存错误

我正在运行一个大型的Wordpress多站点安装,为每个站点运行一些数据库查询以在相应的博客中显示信息。 数据查询不是太重,但我经常在我的错误日志中看到: PHP Fatal error: Allowed memory size of 1572864000 bytes exhausted (tried to allocate 97 bytes) in /home/********/public_html/wp-includes/wp-db.php on line 1775 发生这种情况时,我相信被调用的页面(导致错误)停止加载,用户必须重新加载才能访问信息。 我已经经历了每一页都被称为一个完整的负载,没有任何问题。 查看wp-db.php文件中的相关行,这是导致错误的行: preg_match( '/^\s*(create|alter|truncate|drop)\s/i', $query ) ) { $return_val = $this->result; 即当数据库查询正在执行时。 有些东西显然是相当错误的,因为我试图提高我的内存限制的PHP资源。 有谁知道我会怎么去确定是什么导致这个错误,所以我可以解决它?

CI和WordPress使用Nginx + PHP 7.1 + MariaDB缓慢查询数据库

问题 我使用Nginx 1.10.2 + PHP 7.1.10(php-fpm)+ MariaDB 10.1.28运行CentOS 7机器。 使用这台机器我服务于以下应用程序: 4x Laravel 5.x 10x MODx Revo 2.5.8 1x WordPress 4.8.3 2x CI 3.1.6 虽然我的Laravel和MODx Revo应用程序运行速度超快,没有任何问题,但我的状态监视器,缓慢的日志(PHP-FPM和MariaDB Slowlog)以及手动testing都certificate, 10请求我的Wordpress和CI应用程序3请求。 是非常缓慢(最慢5-7秒),而其他7个要求。 如预期般快速。 debugging/解决步骤 激活的php-fpm和mariadb的缓慢日志(> = 3秒):结果证实,只有我的CI和Wordpress应用程序在慢速日志中引起了条目。 在分析条目后,我可以将它们分为两类: cron / curl脚本 数据库交易 所以起初我禁用了所有的cron / curl脚本。 但状态监视器和手动testing对于这些应用程序仍然显示约5-7秒的缓慢请求。 这将其分解为数据库事务。 这里是例子: WordPress的 www-slow.log(PHP-FPM) [13-Nov-2017 09:44:09] [pool www] pid 24000 script_filename = /usr/share/nginx/www/wordpress/index.php […]

IIS | PHP错误:没有指定input文件

我运行IIS 7.5 / PHP 7.0 CGI。 如果我在浏览器中打开一个不存在的 .php文件,我得到这个错误: 没有指定input文件。 IIS不使用.php的404错误页面,就像在.html文件中一样。 我find了一些解决scheme,例如在php.ini中设置doc_root或注释掉open_basedir ..但它不会帮助。 我知道这是一个服务器问题,但不是哪个。 问题是:为什么我得到“没有指定input文件”。 输出,如果我打开一个不存在的.php文件,而不是IIS 404错误页面?