在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 相关文章推荐
PHP新手上路(十四)
Oct 09 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
Dec 25 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP的mysqli_stat()函数讲解
Jan 23 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
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
高中生学习的自我评价
2013/12/14 职场文书
新学期决心书
2014/03/11 职场文书
离婚协议书范本2014
2014/10/27 职场文书
个人政治思想总结
2015/03/05 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL