LNMP一键安装包优化
lnmp 作为现在phper的主流安装包, 有其自身很强大的优点. 但是安装完后, 也不是100%适配你自己的系统. 我在安装后, 对其几处不太合适的地方做了一下总结.
opcache 优化
通过 lnmp 的 addon 脚本可以安装 opcache, 但是安装完后会发现, 每次改一个文件, 总要60s 之后才生效.
修改 php.ini 中的配置项 validate_timestamps
和 revalidate_freq
两个选项后, 仍然不起效果.
很明显, 配置并没有生效. 那我们查找一下是否有 Additional ini 文件.
php -i | grep Additional
Additional .ini files parsed => /usr/local/php/conf.d/004-opcache.ini,
ok, 修改004-opcache.ini
文件的相关选项.
php-fpm 报错设置
修改 php.ini 文件中 display_errors = On
, 就可以显示错误. 但是在线上环境强烈建议关闭此选项, 防止错误信息暴露代码的路径版本等信息.
通过如下代码, 在单独业务代码+环境中启用报错.
error_reporting("E_ALL");
ini_set("display_errors","On");
解释 php.ini 其他报错设置
display_startup_errors
: php 启动阶段的错误.
html_errors
: 配合另外一个docref_root
, 错误用 html 形式展示.
502 Bad Gateway
The proxy server received an invalid response from an upstream server.
这种情况, 未开启 PHP-fpm 报错, 导致 fpm 未发送任何信息给 nginx 就关闭和 nginx 通信. 开启报错, 就可以显示出错误.
open_basedir restriction in effect
open_basedir是 php.ini 的一个配置, 主要是限制 php 仅能访问配置目录下的文件. 可以通过 php-fpm.conf & nginx.conf 进行配置.
php web 系统中, 通常会将 index.php 文件放入 web 目录下, 其他业务代码放在其他目录. LNMP 在默认的 nginx 配置文件fastcgi.conf 中
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
修改为
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";