在mac中搭建php的开发环境

1. apach ---- 推荐用MAMP。你只要把你的php文件/项目放入到htdocs(/Applications/MAMP/htdocs)目录下,启动mamp,输入localhost就可以直接看见你这个目录下的所有文件了。--由于这种相对简单,这里不再赘述,如果任何问题,欢迎联系交流。

2. nginx ---- 由于没有已经集成的工具,nginx相对apach的配置相对复杂。比如你需要下载mysql,下载php-fpm,甚至还需要用homebrew来安装。(我下面的说明都是基于homebrew安装的情况)在这里我简单的说明几点需要特别注意的情况:

2.1 nginx的配置

需要说明的是/usr/local/etc/nginx下的conf文件server的配置,fastcgi_param选项,注意当加上$document_root,如下面所示:实际上,下面的$document_root$fastcgi_script_name;是和fastcgi.conf里面的值一致。

server {
listen ;
server_name localhost; //指定你的域名 #charset koi8-r; #access_log logs/host.access.log main; location / {
root /Users/megan/www/; // 指定你项目的路径
index index.html index.htm;
} #error_page /.html; # redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

本文是有mysql引发的,这里就简单的说说mysql的简单命令。

启动 -- mysql.server start

关闭 -- mysql.server stop

重启 -- mysql.server restart

连接 -- mysql -uroot 或者 mysql -uroot -p (这里是密码)

导入数据 -- source ../*.sql

2.3 php-fpm的配置

这玩意儿最郁闷的是我没有找到很好的重启和关闭的命令。比如nginx的启动用sudo nginx,关闭用sudo nginx -s -stop重启用sudo nginx -s reload. 可php-fpm我只会用sudo php-fpm来启动。关闭的方式简直是粗暴。

我首先用ps aux|grep php来查看有那些php进程在运行,然后执行kill php-fpm相关进程。比如下面这样的结果执行(sudo)kill 3870 3871 3872.再查看一次,你会发现这些进程没有了。(如果哪位同仁有更好的办法并能指点迷津,比女子将不胜感激)

[megan@megan:~]$ps aux|grep php
megan 4.6 7.4 ?? S :51AM :40.56 /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -os macosx -ws cocoa -arch x86 -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -name Zend Eclipse for PHP Developers --launcher.library /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS//../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.200.v20120522-1813/eclipse_1503.so -startup /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS//../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.overrideVmargs -showlocation -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -showlocation -data /Users/megan/www -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -showlocation -keyring /Users/megan/.eclipse_keyring -showlocation -vm /System/Library/Frameworks/JavaVM.framework -vmargs -Xms128M -Xmx512M -Djava.awt.headless=true -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Xdock:icon=../Resources/Eclipse.icns -XX:MaxPermSize=256m
megan 0.4 0.0 s001 S+ :48PM :00.01 grep php
nobody 0.0 0.2 ?? S :57PM :05.74 php-fpm
nobody 0.0 0.2 ?? S :57PM :01.09 php-fpm
root 0.0 0.0 ?? Ss :57PM :00.23 php-fpm
回到问题

其实这个问题很简单,只需要找到你的mysql.sock 然后回到你的php.ini修改一个配置就好了。主要是下面三行代码。

pdo_mysql.default_socket=/tmp/mysql.sock //如果使用的是zendframework,这个需要配置
 
// 如果使用的是opencart等并没有使用pdo的需要配置下面两项。
mysql.default_socket = /tmp/mysql.sock mysqli.default_socket =/tmp/mysql.sock

实际上只做了一件事,那就是将mysql.sock配置给default_socket。

其实这里最主要的问题是你怎么找到你的mysql.sock, 怎么找你的php.ini。玩了这么就的mac,除了做iOS开发,无论是玩java还是php还是其他,最郁闷的一件事情是找相关的配置文件。什么whereis,locate,which等都用了个遍,往往还是找不到文件,那种痛苦,不想多说。

找到php.ini最简单的办法--建一个文件,phpinfo()会让世界变得异常美好。

找到mysql.sock -- 你可能会使用mysqladmin viriables 查看mysql所有的参数,你或许发现mysql.sock的路径指向了/tmp/mysql.sock,可是你找不到那个文件,尽管你现实所有隐藏文件你还是看不到这个文件。

Directive Local Value Master Value
pdo_mysql.default_socket /var/mysql/mysql.sock /var/mysql/mysql.sock

那么你可以执行sudo find / -name mysql.sock 它会告诉你,其实你的mysql.sock在private/tmp/mysql.sock这里。那么你可能会想用下面这行代码来建一个快捷方式。

ln -s /private/tmp/mysql.sock /tmp/mysql.sock
 

ok,是可以,或许它会提醒你这个文件已经存在了。没关系,不用理会它,尽管你在/tmp里面还是看不见mysql.sock。你只管用就行了。我也不知掉多到哪个我看不见的角落了。总之,有个mysql.sock的快捷方式在/tmp下面给你使用。

来源:http://my.oschina.net/megan/blog/325040

最新文章

  1. [Java 缓存] Java Cache之 DCache的简单应用.
  2. Trace-语句启动Profiler中暂停的跟踪会出现什么状况
  3. 【USACO 2.2】Party Lamps
  4. parseInt()、parseFloat()与Number()的比较
  5. SqlServer优化博客网址
  6. PHP重构之函数上移
  7. Android webview 应用
  8. [LeetCode]题解(python):063-Unique Paths II
  9. tar split cat 创建、合并分卷压缩包
  10. shopnc前台登陆不进去解决方法
  11. Java中char,short,int,long占几个字节和多少位
  12. java8 :: 用法 (JDK8 双冒号用法)
  13. ggplot2画histogram(坐标轴刻度值字体大小,坐标轴标题字体大小,柱形宽度,大标题字体大小、居中)
  14. [转] Node.js中package.json中库的版本号详解(^和~区别)
  15. Rsync + Sersync 实现数据增量同步
  16. BZOJ.4818.[SDOI2017]序列计数(DP 快速幂)
  17. DataTable 指定位置添加列
  18. Echart绘制趋势图和柱状图总结
  19. BZOJ2178: 圆的面积并(格林公式)
  20. mysql中,通过json_insert函数向json字段插入键值?json_insert函数的使用?

热门文章

  1. codeforces 611D New Year and Ancient Prophecy
  2. 【HHHOJ】ZJOI2019模拟赛(十六)4.07 解题报告
  3. The Child and Zoo 题解
  4. com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭
  5. HDU 2005 第几天?(闰年判断)
  6. 188. Best Time to Buy and Sell Stock IV——LeetCode
  7. Vue教程:简介(一)
  8. SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API
  9. 菜鸟崛起 DB Chapter 2 MySQL 5.6的概述与安装
  10. 有个数组 我现在需要把数组里面的值按照n个一组,赋予一个新的数组