#the php-fpm config and cammand...

cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

php-fpm --fpm-config /usr/local/etc/php-fpm.conf --prefix /usr/local/var

ps aux | grep 'php-fpm'

killall -HUP php-fpm

#the nginx config and cammand...

brew services restart nginx

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
=====>
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

 

 

可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理

location ~ \.php$
{
...
#文件不存在转404
try_files $uri = 404;
...
}

然后,在你的配置文件中找到下面这段

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

替换成下面
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 
 
 

mac 启动php-fpm

 
Mac OS X 10.9已经自带有php-fpm,对于有干净系统强迫症的人,或者原装控来说,用brewhome重装一遍总感觉心里会有小兔子,下面把原装的php-fpm配置起来。

 
直接运行,有报错找不到配置文件。
$ php-fpm
[11-Jan-2014 16:03:03] ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)
[11-Jan-2014 16:03:03] ERROR: failed to load configuration file '/private/etc/php-fpm.conf'
[11-Jan-2014 16:03:03] ERROR: FPM initialization failed
可以在/private/etc/ 目录下生成配置文件,需要root权限(sudo)
或者在普通用户有权限的目录里放置配置文件,通过--fpm-config参数指定配置文件的位置,如下:
# cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
 
$ php-fpm --fpm-config /usr/local/etc/php-fpm.conf
[11-Jan-2014 16:10:49] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
[11-Jan-2014 16:10:49] ERROR: failed to post process the configuration
[11-Jan-2014 16:10:49] ERROR: FPM initialization failed
错误信息显示:不能正确的打开”日志“文件,原因是默认在/usr/var目录下工作,可以修改配置文件指定正确的日志文件路径
 
$ vim /usr/local/etc/php-fpm.conf
修改php-fpm.conf文件中的error_log项,默认前缀是/usr/var ,但并没有这个路径
error_log = /usr/local/var/log/php-fpm.log
pid = /usr/local/var/run/php-fpm.pid
或者不修改配置文件中配置项的路径,在php-fpm的运行参数中(-p)指定放置运行时文件的相对路径前缀
 
$ php-fpm --fpm-config /usr/local/etc/php-fpm.conf  --prefix /usr/local/var
到此,php-fpm守护进程已经基本可以正确的启动了。
 
下面我们看下php.ini配置文件及扩展的安装。
首先看下编译参数,有些值是编译进执行程序的,无法更改。
$ php -i|grep config
找到配置文件(php.ini)、目录的位置,下面两项的值指定
'--with-config-file-path=/etc'
'--with-config-file-scan-dir=/Library/Server/Web/Config/php'
所以我们需要在/etc目录下创建php.ini,Mac在/private/etc,/etc下均提供了样例文件php.ini.default,通过查验,两个文件完全相同,所以复制哪一个都无所谓,Mac有提供md5而不是Linux下的md5sum:
$ md5 /private/etc/php.ini.default /etc/php.ini.default
MD5 (/private/etc/php.ini.default) = 1c47241665ea5efdc55fd5809f675449
MD5 (/etc/php.ini.default) = 1c47241665ea5efdc55fd5809f675449
 
/etc目录权限root:wheel,需要root权限或使用sudo,关于如何设置Mac的sudo命令需要的密码,请查看
http://support.apple.com/kb/HT4103?viewlocale=zh_CN&locale=zh_CN
http://support.apple.com/kb/PH6515?viewlocale=zh_CN
 
# cp /etc/php.ini.default  /etc/php.ini
变更own,以后修改不用老是切换root,生产环境最好不要改
# chown <你的用户名> /etc/php.ini
# chmod u+w /etc/php.ini
 
安装PHP扩展
/Library/Server/Web/Config/php 这个目录并不存在,或者Mac OS X Server版本有吧,不知道,手动创建他,以root权限
# mkdir -p /Library/Server/Web/Config/php
 
编译扩展,brewhome是另起炉灶,brew方式安装扩展需要依赖php,如php54-redis会依赖php54,至于编译出来的扩展是否可以配置到自带的,没有实验过。下面以php_discuz扩展(https://github.com/potterhe/php_discuz下载)为例。
假如扩展源码在/Users/apple/php_discuz目录
$ ./configure
$ make
扩展编译后,默认会存储在 /Users/apple/php_discuz/modules/discuz.so
将扩展在配置文件中打开
$ echo "extension=/Users/apple/php_discuz/modules/discuz.so" > /Library/Server/Web/Config/php/discuz.ini
 
测试验证
$ php -i|grep discuz
discuz support => enabled
 
运行用例测试
$ php -f /Users/apple/php_discuz/discuz.php
 
 
 

Nginx访问PHP文件的File not found错误处理,两种情况

这个错误很常见,原有有下面两种几种

1. php-fpm找不到SCRIPT_FILENAME里执行的php文件

2. php-fpm不能访问所执行的php,也就是权限问题

第一种情况

可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理

location ~ \.php$
{
...
#文件不存在转404
try_files $uri = 404;
...
}

然后,在你的配置文件中找到下面这段

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

替换成下面
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 

然后重新加载nginx配置文件

 systemctl restart nginx

第二种情况

两种解决方法:
第一种,就是把你root文件夹设为其他用户允许
第二种,找到你的php-fpm的配置文件,找到下面这段,把apache替换成你要的用户组

; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

不积跬步,无以至千里;

mac 启动php-fpm

 


mac nginx php php-fpm的更多相关文章

  1. Mac + nginx + lua + luasocket + cjson

    1. Lua // 官方网站 http://www.lua.org/ 下载源码包// 由于配合 nginx 使用, 所以使用 5.1.X 版本 $ .tar.gz $ cd lua- $ make m ...

  2. mac nginx 一些资料

    http://www.jianshu.com/p/918eb337a206 mac 的nginx 配置目录在/usr/local/etc/nginx 安装之前最好执行brew的update和upgra ...

  3. mac nginx php-fpm

    再一次被困在一个傻问题.由于我居然怀疑是不是mac本身就和centos的安装不一样.在一次次地排错后,最终发现.原来是我的nginx.conf的一行配置少写了一个字母.最后多亏用ls检查来定位到这个错 ...

  4. MAC NGINX PHP XDEBUG

    1. 安装 homebrew 2. 安装nginx ; 终端运行 brew install nginx: 1)给nginx 设置管理员权限:如果不设置管理员权限,80端口是不能监听的: #这里的目录根 ...

  5. mac nginx 启动 自启动

    MacBook-Pro:local shihw$ brew services start nginx ==> Tapping homebrew/services Cloning into '/u ...

  6. mac nginx compile

    编译 ./configure \ --prefix=/usr/local/services/nginx-1.14.0 \ --with-openssl=/Users/gavin/Downloads/s ...

  7. mac Nginx+CI出现404错误

    主要是ci框架需要配置rewrite nginx.conf配置文件添加: location /wechat/ { if (!-e $request_filename) { rewrite ^/wech ...

  8. mac nginx+php-fpm配置(安装过后nginx后访问php文件下载,访问php文件请求200显示空白页面)

    访问php文件下载是因为没配置php-fpm 两个问题主要都是nginx.conf配置的问题: /usr/local/etc/nginx/nginx.conf server {    listen 8 ...

  9. mac nginx 安装教程

    eeking a satisfactory solution to create a local web server for programming in macOS with PHP and My ...

随机推荐

  1. 莫比乌斯反演+二维前缀和——hdu4746二刷

    第二次做这题,求前缀和的时候还是卡住了 fg函数的反演是可以直接用莫比乌斯基本代换式来代换的 #include<bits/stdc++.h> using namespace std; #d ...

  2. Centos7.5安装mysql 8.0.11

    一.安装前准备 安装采用二进制包方式,软件包8.0.11版本下载地址: https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-linux-gl ...

  3. [转]C# 将类的内容写成JSON格式的字符串

    将类的内容写入到JSON格式的字符串中 本例中建立了Person类,赋值后将类中内容写入到字符串中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using System; ...

  4. webstorm快捷键、支持vue文件等部分使用技巧

    转载:https://www.cnblogs.com/seven077/p/9771474.html 1.常用快捷键 shift+↑ 向上选取代码块shift+↓ 向下选取代码块ctrl+/ 注释/取 ...

  5. 基于Netty的RPC架构学习笔记(六):netty5案例学习

    文章目录 netty5服务端入门案例 netty5客户端入门案例 单客户端多连接程序 知识普及 线程池原理图 对象池原理图 对象组原理图 结论 理论结合实际 开干开干 总结 netty5服务端入门案例 ...

  6. ASP.NET MVC Controller激活系统详解2

    一.引言 此篇博文紧接上篇博文进行阐述,本篇博文阐述的主题是Controller激活和url路由 二.总述 ASP.NET路由系统是HTTP请求抵达服务端的第一道屏障,它根据注册的路由规则对拦截的请求 ...

  7. PAT_A1043#Is It a Binary Search Tree

    Source: PAT A1043 Is It a Binary Search Tree (25 分) Description: A Binary Search Tree (BST) is recur ...

  8. 拾遗:Unix 守护进程编写规范

    //标准库自带函数,通常以 daemon(0, 0) 方式调用 int daemon(int nochdir, int noclose) Linux: #include <unistd.h> ...

  9. 实现solr热词排行榜

    现在有业务场景,要求实现词库里面,最新,最热的词并显示,点击热词后可以进入相关信息的文章或者句子 热词的显示频率12小时更新一次. 实现思路: 实现步骤:

  10. <爬虫实战>豆瓣电影TOP250(三种解析方法)

    1.豆瓣电影排行.py # 目标:爬取豆瓣电影排行榜TOP250的电影信息 # 信息包括:电影名字,上映时间,主演,评分,导演,一句话评价 # 解析用学过的几种方法都实验一下①正则表达式.②Beaut ...