说明php有许多开源项目比较好像 , 在自己的机器上用Docker搭建了很多 。
每个docker都是跑了个Apache , 每个docker里面都有apache 。
这样好像有点浪费资源 , 而平时都是用Nginx , 所以研究了用nginx运行php
中间竟然碰到许多坑 , 而回过头来看 , 其实都很简单 。
nginx运行php的原理nginx不能解析php , 要和php-fpm配置使用 。nginx负责将php的请求转给php-fpm解析处理 , 然后返回响应结果
nginx运行php会遇到哪些坑错误的提示有很多 , 最基本有"File not found"、"403"、"404"、"nginx no input file specified"等等
总之能试出许多错误 。**而归结到底 , 只有一个根本原因“权限”**
而最好的方法是 , 直接把nginx和php-fpm设置为root用户运行
测试环境|对象|版本|
|--|--|
| 操作系统 | fedora27 |
| nginx | 1.12.1 |
| php-fpm | php7 |
配置方法* 安装nginx
yum install nginx
* 安装php-fpm
yum install php-fpm
经过上面两步, php-fpm会自动将nginx配置好 , 只要将php放到/usr/share/nginx/html目录就可以运行 。但是我不想放在这个目录 。
* 设置php-fpm以root用户运行
1.打开文件 /usr/lib/systemd/system/php-fpm.service2.在ExecStart 最后面加上参数-R标识可以用root身份运行(php-fpm默认不能用root运行)(有可能改了php-fpm.server文件不能运行 , 请运行systemctl reload重新加载)[Unit]Description=The PHP FastCGI Process ManagerAfter=syslog.target network.target[Service]Type=notifyExecStart=/usr/sbin/php-fpm --nodaemonize -RExecReload=/bin/kill -USR2 $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target3.打开文件/etc/php-fpm.d/www.conf4.将修改user和group为rootuser=rootgroup=root
* 设置nginx以root身份运行
1.打开/etc/nginx/nginx.conf2.将user改为root
* 配置自己的php项目
将下面内容放到/etc/nginx/conf.d/目录下server {listen 8080;server_namelocalhost;root/home/xxxxx;#改成自己的地址index/_h5ai/public/index.php;#改成自己的php首页include /etc/nginx/default.d/*.conf;#使用已经配置好的locationlocation / {}}
排错方法如果在配置过程中 , 遇到了错误 。用什么方法调试呢?
* nginx调试方法
nginx的任务是把php的路径调对 。可以先把php-fpm注释掉 , 专门调nginx , 当能从浏览器下载php文件 , 说明配置正确 。
* php-fpm调试方法
用命令运行php-fpm会有清晰的输出
/usr/sbin/php-fpm --nodaemonize -R
总结nginx运行php总的说来很简单 , 由于权限问题 , 会导致遇到许多的坑 。
实际很多情况下 , 都是给内部用 , 直接用root就可以 。当然这样方法在正式环境不安全 。
文章插图
【nginx运行php的终极方法,可避免许多不必要的坑】
推荐阅读
- timeout Linux中运行有时间限制的命令
- 使用此开源窗口环境一次运行多个控制台
- 48条高效率的PHP优化写法
- nginx一招配置,帮你快速隐藏php后缀名
- PHP 安装 CKEditor5 和 CKFinder3
- Linux+Nginx+MySQL+PHP CentOS 8.1下搭建LEMP环境
- Tomcat是如何运行的?整体架构又是怎样的?
- wp博客php代码网站漏洞修复详情
- 免费网站高级Waf防火墙:VeryNginx,防御网站被攻击
- Nginx只允许域名访问网站,禁止使用IP 访问80,443端口