Articles of PHP

PHP在nginx服务器上加载缓慢

我有一个815K每月唯一用户的PHP应用程序,在我的开发机器上加载相当快(大约600毫秒的主页),并用于在生产服务器上快速加载。 我不是一个系统pipe理员,我只是一个开发人员,所以我开始search有关诊断服务器,我遵循这个stream程图 虽然最近stream量有所增加,但服务器资源似乎没有问题。 %Cpu(s): 8.3 us, 2.6 sy, 0.0 ni, 87.1 id, 0.0 wa, 0.0 hi, 0.3 si, 1.7 st 我有足够的内存可用。 在缩小这个问题之后,我尝试了一些让我感兴趣的结果,我从浏览器中复制了html源代码,并将其传递给生产服务器中的test.html,并在不到800ms的时间内加载,我使用相同的html代码,它test.php,它需要大约6s的加载,这两个文件共享相同的HTML代码,没有数据库查询已在文件中执行,所以我认为这与我的nginx或PHPconfiguration的东西。 这是我的nginxconfiguration: server { listen 80; server_name site-name.com; root /home/user/site-name.com/public; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location […]

suEXEC在试图以userXYZ方式执行脚本时查询www数据

我正在用Apache2和PHP 7.0与FastCGIbuild立一个suexec环境。 我已经安装了一切正常的方式 Aptitude install libapache2-mod-fcgid apache2-suexec-custom A2enmod suexec 我的服务器有以下结构: 有用户在/ home / username / public_html /(linux用户“ 用户名 ”) 在/ data / www /(用户“主页”)中有一个主要的网站。 到目前为止,SuEXEC的工作,但有一个主要的问题:由于某种原因,suEXEC查询/ etc / apache2 / suexec /万维网数据而不是/ etc / apache2 / suexec /用户名,因此我只能有我的网站/数据工作,或在/在家工作的网站,但不是两个。 我不明白,因为我的服务器上没有脚本是由万维网数据拥有。 / etc / apache2 / suexec / www-data(不变,因为我不使用www-data) /var/www public_html/cgi-bin 在/ etc / apache2的/ suexec的/主页 /data www/cgi-bin […]

Apache服务器冻结 – 内存快速填充

我有一个运行PHP5.5.x / MySql5.5.x(内存16GB)的centos上运行的应用程序,现在的问题是,在某个随机时间点,apache / mysql进程无响应。 有些东西仍然附加在内存中,然后caching(交换)在应用程序崩溃后填满非常快。 有没有人遇到类似的问题,或者如何开始debugging,看看它是什么耗费资源,为什么他们不清理? 我怎样才能开始debugging? 任何build议或暗示将受到欢迎。 以下是my.cnf [mysqld] datadir=/usr/mysql socket=/var/lib/mysql/mysql.sock tmpdir=/usr/mysql-tmp user=mysql #innodb_buffer_pool_size=5368709120 innodb_buffer_pool_size=5G innodb_log_file_size=1G table_open_cache = 5000 thread_cache_size = 16384 sort_buffer_size = 2294967295 join_buffer_size = 2294967295 query_cache_limit = 2294967295 read_buffer_size = 2147479552 query_cache_size = 4294967295 key_buffer_size = 2294967295 在httpd.conf # # This is the main Apache server configuration file. It contains […]

FreeBSD上的Apache无法识别PHP更新

我正在尝试更新FreeBSD机器上的PHP安装。 我跑了 portsnap fetch update cd /usr/ports/lang/php56 make reinstall cd /usr/ports/lang/php56-extensions make reinstall service apache24 restart 然后重新加载页面,我有phpinfo()显示输出,它仍然显示5.6.24但如果我在shell提示符运行php –version ,我得到 PHP 5.6.31 (cli) (built: Aug 30 2017 13:40:53) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies 显然我在这里忘了一步,但是我这样做已经有一段时间了,我的记忆有点模糊。 编辑 正如箭头所指出的,我还有两个步骤可以运行: cd […]

如何轻微更新PHP版本?

有很多关于将PHP升级到下一个主要版本的教程。 如果我想轻微更新PHP,比如7.0.1到7.0.3,该怎么办? 什么是正确的方法呢? 在这种情况下,我使用Ubuntu 14。

在公共web api旁边运行本地节点服务器会带来安全风险吗?

我目前正在运行在PHP上运行的公共Web API。 我正在考虑添加一个PHP可以与之交互的本地节点服务器。 这将允许我做一些事情,比如将长时间运行的操作传递给节点,这样我就可以快速响应用户,而不会在长时间运行时阻塞php脚本。 操作完成后,我可以使用firebase发送推送消息,通知用户他的操作已经完成。 PHP服务是通过SSL安全的,但我想我也许可以通过HTTP运行本地节点服务器,因为它的本地无论如何。 它不能通过公共IP访问。 这是一个安全的解决scheme吗?

PHP-FPM慢日志错误:无法执行ptrace(ATTACH)子操作:不允许操作(1)

我使用Nginx / PHP-FPM运行CentOS 7。 为了debugging一些缓慢的Wordpress和CodeIgniter请求,我在www-pool.conf激活了PHP-FPM的慢日志function: slowlog = /var/log/php-fpm/www-slow.log request_slowlog_timeout = 4s 缓慢的请求正在被logging,但有意义的堆栈跟踪不会打印到www-slow.log 。 该文件正在生成,但是为空,默认的error.log显示这样的条目: [12-Nov-2017 16:50:26] WARNING: [pool www] child 21497, script '/usr/share/nginx/www/wordpress/index.php' (request: "GET /index.php") executing too slow (4.161874 sec), logging [12-Nov-2017 16:50:26] ERROR: failed to ptrace(ATTACH) child 21491: Operation not permitted (1) [12-Nov-2017 16:50:26] WARNING: [pool www] child 21491, script '/usr/share/nginx/www/wordpress/index.php' (request: "GET […]

你怎么能恢复php ini文件和.so文件到他们的原始configuration

我正在升级我的虚拟机到PHP7,我已经遇到了一些问题,如:PHP警告:PHP启动:无法加载dynamic库'/usr/lib64/php/modules/pdo.so'/ usr /lib64/php/modules/pdo.so:undefined symbol:zend_get_executed_scope in Unknown on line 0 我想重新下载这些文件。 我怎样才能做到这一点? 在centos上工作7。

PHP需要很长时间来处理未caching的页面

在我的服务器上,如果PHP尚未被APCcaching,PHP将花费很长时间来执行一个脚本(比如5秒)。 之后,它执行得非常快。 我会提供更多的信息,但我不知道从哪里开始。 你能猜到并指向正确的方向吗? 一旦我有更多的信息,我会编辑这个问题。

在同一个框上运行sphinx(searchd)的多个实例时出错

我有一个MediaWiki服务器,承载MediaWiki的4个实例,图我应该有一个单独的sphinxsearch实例运行。 我通过为每个创build单独的sphinx.conf文件并将其configuration为在不同的端口上运行来实现这一点 sphinx的设置非常简单,允许我为每个实例指定一个自定义的端口 ,直到SphinxSearch.php ,它似乎使用wgSphinxSearch_port重新定义端口。 我注释了这一行,search似乎正常工作的所有实例。 我遇到的问题是,PHP在页面顶部抛出一个错误: 警告:assert()[function.assert]:断言失败/var/lib/mediawiki-1.11.0/extensions/SphinxSearch/sphinxapi.php第251行 我知道我可以在php.ini中closuresdisplay_errors ,但这不是一个真正的解决scheme。 有其他人遇到这个问题吗? 我是唯一一个运行多个searchd实例吗? 为什么这个错误被抛出,我该如何解决?