在Mac下使用MAMP Pro环境

以前,我使用Windows作为自己的工作系统,后来,改用Mac作为自己的主要工作系统了。

在Windows下,快速搭建*AMP环境,使用xampp或者WAMP之类的集成包,会一口气装好所有需要的软件,而在Mac下,相应的,做得比较好的是MAMP,我选用的是与之对应的收费版本MAMP Pro,总体差别不大。

你可能要说了,Mac自带Apache的啊,也自带PHP,为啥要装东西啊,原生的不好么?

嗯,很好的问题。

MAMP集成度更高一些,比如Mac就不提供MySQL,就很麻烦了,另外Apache的各种模块,也难保Mac自带的是哪个版本的,MAMP至少带有四个版本以上的PHP,可以随便切换,也可以根据项目制定,另外集成了自动化配置VirtualHost功能,这个极大地方便了环境搭建。

MAMP是一个沙盒,不像Mac自带的环境,散布在系统各处,主要指配置文件,二进制文件,如果你要配合安装一些模块,涉及到编译,安装等等,你就会把各种配置文件和二进制文件搞到系统深层目录里,多数目录都要sudo才能获得写权限,而你装进去的这些东西,可能永远没法执行可逆操作了,除非你清楚记得所有做过的变更。相应地MAMP是在一个App文件夹里,卸载的时候拖住删了就行了。

使用MAMP环境,可以将代码放在全系统的任何目录,配置的时候,只要点点鼠标即可,但是用系统自带,我看很多同事,更加倾向于都放到一个htdocs文件夹,这绝对不是必须的,只是都放在一起的话,会一目了然,可以管理你到底配置了多少VirtualHost,而MAMP环境里,不管你放在哪里,都会在hosts那栏列出来。

MAMP自动使用hosts文件模拟域名指向,配置VirtualHost的时候,同步自动完成,而用系统原生的话,你不得不使用IP地址访问,或者自己手动维护hosts文件,这太拙劣了。此外MAMP提供了DNS服务,我一般都用hosts,但是我想,DNS也一定有其用途,比如,进行手机调试的时候,你可以指向DNS服务,从而使手机能连接到你本地的电脑,做本地调试,完全自己搞,这是很困难的。

使用的时候,要注意一些事项,比如我经常犯的一个错误,我会把MAMP里带的PHP二进制和系统自带的二进制混着用。

在绝大多数情况下,这都没有任何问题,但是一些特例问题上,有着很大不同。

比如,通过PHP脚本连接MAMP提供的MySQL时候,如果用系统自带的PHP二进制,你会发现死也连不上MySQL,报错是找不到文件。会报错如“SQLSTATE[HY000] [2002] No such file or directory”,其实,MAMP自己提供的MySQL,一般在PHP里,都用localhost作为连接字符串,而这个时候,默认就会使用unix socket文件去连接MySQL,刚才也说了,Mac系统自己是没有安装MySQL的,所以,你指望自带的PHP知道去哪里找到unix socket文件,那根本不可能,因为MAMP提供的MySQL,其socket文件也在沙盒里,不是一般缺省的那个socket,所以,这里总是报找不到文件,这很诡异,一旦遇到,很难定位,我在同一个坑栽倒两次了。

解决方法,也无敌简单,就是给沙盒里地PHP二进制,做一个软链,放到/usr/local/bin下面,比如命名为php55,以后再执行需要连接数据库的脚本的时候,记得使用php55作为解释器来运行,就会顺畅。

另外,还有一个问题,也比较常见,就是MAMP这个软件包,竟然没有提供memcached扩展,还好,你去Google搜索,能搜到有人都编译好的版本,在GitHub上,直接下载对应的二进制文件就行了,拷贝到沙盒相应的PHP文件目录里。另外记得,这个扩展有依赖,需要用brew 安装memcached和libmemcached才能使用,没装的话,表现一直是apache启动不了,或者启动,还说没有memcached扩展。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4658
来自专栏杨龙飞前端

scrollto 到指定位置

2484
来自专栏魂祭心

原 canvas绘制clock

4004
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4798
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

2898
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

30810
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6588
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2517
来自专栏落花落雨不落叶

canvas画简单电路图

58311

扫码关注云+社区