在Mac OS上自行编译安装Apache服务器和PHP解释器


Posted in PHP onDecember 24, 2015

Apache 2.2.27和PHP 5.5.12在Mac OS X 10.8.5编译安装过程:
在开始之前首先升级Xcode的组件: preferences => Downloads => 下载Command Line Tools包

然后进入Apache的源码包,对于大部分的源码包都可以使用下面这个指令来查看编译选项:

./configure --help

配置编译选项:

./configure --prefix=/Users/levin/dev/apache2.2.27 --enable-modules=most --enable-mods-shared=all

报错:

checking for APR-util... yes
checking for gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc
checking whether the C compiler works... no
configure: error: in `/Users/levin/Downloads/httpd-2.2.27':
configure: error: C compiler cannot create executables
See `config.log' for more details

上面的报错是指路径:

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc

不存在

解决方法:

cd /Applications/Xcode.app/Contents/Developer/Toolchains
sudo ln -s XcodeDefault.xctoolchain OSX10.8.xctoolchain

接着编译并安装:

make
make install

编辑配置文件httpd.conf,一般修改监听端口、运行Apache的用户和组、服务器名称、开启gzip等配置。

进入安装好的目录启动Apache:

./bin/apachectl start

安装PHP

关于PHP编译选项可以参考: PHP: List of core configure options - Manual

./configure --prefix=/Users/levin/dev/php5.5.12 --with-apxs2=/Users/levin/dev/apache2.2.27/bin/apxs --with-config-file-path=/Users/levin/dev/php5.5.12/etc --with-openssl --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-ftp --with-gd --enable-gd-native-ttf --with-mhash --enable-mbstring --enable-soap --enable-zip --enable-sockets --with-mysql=/usr/local/mysql-5.6.12-osx10.7-x86_64 --with-mysqli=/usr/local/mysql-5.6.12-osx10.7-x86_64/bin/mysql_config --with-iconv --with-pear --enable-opcache
make

整个编译过程需要5-10分钟,视硬件配置而定,可以先去弄杯牛奶喝

发生错误:

Undefined symbols for architecture x86_64:
 "_res_9_init", referenced from:
   _zif_dns_get_mx in dns.o
   _zif_dns_get_record in dns.o
   _zif_dns_check_record in dns.o
 "_res_9_search", referenced from:
   _zif_dns_get_mx in dns.o
   _zif_dns_get_record in dns.o
   _zif_dns_check_record in dns.o
 "_res_9_dn_skipname", referenced from:
   _zif_dns_get_mx in dns.o
   _zif_dns_get_record in dns.o
 "_res_9_dn_expand", referenced from:
   _zif_dns_get_mx in dns.o
   _php_parserr in dns.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [libs/libphp5.bundle] Error 1

解决:

export LDFLAGS=-lresolv

错误:

dyld: Library not loaded: libmysqlclient.18.dylib
 Referenced from: /Users/levin/Downloads/php-5.5.12/sapi/cli/php
 Reason: image not found
...
make: *** [ext/phar/phar.php] Error 133

解决:

cd /usr/lib
ln -s /usr/local/mysql-5.6.12-osx10.7-x86_64/lib/libmysqlclient.18.dylib libmysqlclient.18.dylib

重新编译并安装:

make clean && make
make install

安装完成,此时需要从PHP的源码目录copy一份配置文件到安装目录的etc文件夹下面并改名为php.ini,需要更改PHP的配置时就使用该文件即可。

PHP 相关文章推荐
用文本作数据处理
Oct 09 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
PHP微信API接口类
Aug 22 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
YII框架http缓存操作示例
Apr 29 PHP
php时间戳转换代码详解
Aug 04 PHP
PDO实现学生管理系统
Mar 21 PHP
PHP实现文件上传和多文件上传
Dec 24 #PHP
纯PHP代码实现支付宝批量付款
Dec 24 #PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 #PHP
4种PHP异步执行的常用方式
Dec 24 #PHP
php实现异步数据调用的方法
Dec 24 #PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 #PHP
深入浅析php json 格式控制
Dec 24 #PHP
You might like
做一个有下拉功能的留言版
2006/10/09 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
php获取系统变量方法小结
2015/05/29 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
php实现socket推送技术的示例
2017/12/20 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
教学大赛获奖感言
2014/01/15 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
餐厅总厨求职信
2014/03/04 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
优秀大学生自荐信
2014/06/09 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
无房证明范本
2014/09/17 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
保护动物的宣传语
2015/07/13 职场文书
2016新年致辞
2015/08/01 职场文书
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang