[13-Aug-2017 11:10:52] ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)
[13-Aug-2017 11:10:52] ERROR: failed to load configuration file '/private/etc/php-fpm.conf'
[13-Aug-2017 11:10:52] ERROR: FPM initialization failed
[13-Aug-2017 11:12:55] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
[13-Aug-2017 11:12:55] ERROR: failed to post process the configuration
[13-Aug-2017 11:12:55] ERROR: FPM initialization failed
mac 中自带了 Apache httpd, PHP, php-fpm
启动 Apache httpd 只需要使用此命令
编辑 apache 配置文件
httpd.conf
把 php 模块的注释去掉就可以了
LoadModule php5_module libexec/apache2/libphp5.so
重启 apache
那怎么知道 php 生效了呢?
我们可以让 server 显示 phpinfo
找到
httpd.conf
中DocumentRoot
的配置, 默认是DocumentRoot "/Library/WebServer/Documents"
因此我们需要做如下步骤
/Library/WebServer/Documents
路径下新建一个index.php
<?php phpinfo(); ?>
index.html.*
文件localhost
就能看到 phpinfo 啦Nginx + PHP
我们不满足于使用 Apache + PHP, 目前的主流是 Nginx(或者说我只会 Nginx), 因此我们还想用 Nginx + PHP
Nginx 有几种代理方式,
proxy_pass
,fastcgi_pass
,scgi_pass
proxy_pass
就是常见的 http 代理PHP 有
php-fpm
, 全称叫php fastcgi progress manager
, 翻译成大白话应该是因此 Nginx 和 PHP 通常用
fastcgi_pass
, fastcgi 顾名思义, 就是性能更快的 cgi启动
php-fpm
Mac 中已经自带了
php-fpm
, 我们直接在命令行输入php-fpm
弹出一堆报错, 错误提示大意是没有找到
php-fpm
的配置文件, 于是我们就到/private/etc/
下, 发现有一个php-fpm.conf.default
文件那正好, 我们直接
sudo cp php-fpm.conf.default php-fpm.conf
再启动
php-fpm
结果又报错了
说是找不到
php-fpm.log
文件, 正常系统哪来的/usr/var/
目录啊, 于是我们去新建一个路径sudo mkdir -p /usr/var
, 结果提示没有权限, 得, 那还是改配置文件吧于是我们继续编辑
php-fpm
的配置文件/private/etc/php-fpm.conf
注意, php-fpm 配置文件用
;
作为单行注释, 我们在 pid 和 log 的配置下分别加上两行再次启动
php-fpm
, 只有一些非 root 的警告了确认一下是否成功,
php-fpm
端口用的是9000
输入
lsof -i:9000
, 显示php-fpm
则认为成功配置 nginx
nginx 默认的配置已经有一段写好了的被注释的 fastcgi php 配置, 我们只需要稍加改动
改成这样
单一入口 php 程序
这种 php 项目的特征是有一个
main.php
或者index.php
, 统一处理 php 请求, 在这个 php 里面定义 controller 和 view, 其实现代的项目都是这样的, 因为方便做统一处理, 模块化整个项目其中
location /
会和默认的静态文件目录产生冲突, 如下所示我一般会改成这样
/static
专门处理静态文件重启 nginx 就可以了
参考文档 https://www.chrisyue.com/nginx-php-config-again.html