Mac OS X 10.11 PHP 开发环境配置

OS X 上的 homebrew 和 ubuntu 上的 apt-get 这些包管理器的最大的好处,就是将我们从无休止的编译中解放出来,让环境配置变得如此容易。不用去管这条、那条的编译条件。
下面是基于 homebrew 的安装配置流程。

准备工作

  • 联网
  • 安装 XCode-select(用来安装homebrew)
  • 安装 homebrew

安装最新版 PHP

根据鸟哥的博客,PHP 7 有了很大的性能提升,而程序用的框架 Laravel 又及时地支持了,用 homebrew 安装代码如下:

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew install php70

安装好后需要修改一下配置文件/usr/local/etc/php/7.0/php.ini
在PHP.INI中设置时区

date.timezone = PRC或date.timezone = Asia/Shanghai

安装 nginx

brew install nginx

nginx 的配置

vi /usr/local/etc/nginx/vhost/example.com.conf
vhost 配置
server {
listen 8888;
server_name localhost ;
access_log /Users/zhishanzhang/Sites/wwwlogs/example.com_nginx.log combined;
index index.html index.htm index.php;
root /Users/zhishanzhang/Sites/pdh;
location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
    valid_referers none blocked *.localhost localhost ;
    if ($invalid_referer) {
        return 403;
        }
    }
location ~ [^/]\.php(/|$) {
    fastcgi_pass 127.0.0.1:9000;
#    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}

一些命令:


- Start server with default config:
    nginx

- Start server with custom config file:
    nginx -c config_file

- Start server with a prefix for all relative paths in config file:
    nginx -c config_file -p prefix/for/relative/paths

- Test configuration without affecting the running server:
    nginx -t

- Reload configuration by sending a signal with no downtime:
    nginx -s reload

配置 php-fpm

vi /usr/local/etc/php/7.0/php-fpm.d/www.conf
listen = 127.0.0.1:9000

安装 xdebug

brew install php70-xdebug
vi /usr/local/etc/php/7.0/conf.d/ext-xdebug.ini
[xdebug]
zend_extension="/usr/local/opt/php70-xdebug/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port=10000
xdebug.profile_enable=1

FAQ

  • 出现 502 Bad Gateway 是什么原因?

一般应该是 php-fpm 的原因,检查 nginx 配置中 fastcgi_pass 的是采用的端口还是sock,这个要和php-fpm的配置中保持一样

  • 出现 403 Forbidden 的原因

这个肯定是权限问题,检查文件夹的权限,我出现问题的原因是,由于用的是之前的配置环境,里面有对于资源引用的一个判断,抛出 403 错误

  • 出现首页可以打开,但是点击别的链接 404 Not Found 的原因

这个一般就是,域名的重写问题,如果是 Apache 可以检查 .htacess 文件,如果是 nginx 可以检查看配置中是否有重写的规则,例如下面就是 Laravel 的域名重写规则。

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

呼呼呼山
Jun 2, 2016 12:18 AM

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容