在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 相关文章推荐
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
php实现分页工具类分享
Jan 09 PHP
php实现的漂亮分页方法
Apr 17 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
php实现的递归提成方案实例
Nov 14 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP 搜索查询功能实现
Nov 29 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
php实现简易聊天室应用代码
2015/09/23 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python代码的打包与发布详解
2014/07/30 Python
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
Python socket服务常用操作代码实例
2020/06/22 Python
戴尔美国官网:Dell
2016/08/31 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
求职推荐信
2013/10/28 职场文书
自我评价的写作规则
2014/01/06 职场文书
《将心比心》教学反思
2014/04/08 职场文书
实习协议书范本
2014/04/22 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
校园广播稿范文
2015/08/19 职场文书
小学记事作文之200字
2019/08/06 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
redis数据结构之压缩列表
2022/03/21 Redis
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python