在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中extract()函数的定义和用法
Aug 17 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
php数组合并的二种方法
Mar 21 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php实现的表单验证类完整示例
Aug 13 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 PHP
如何用PHP实现分布算法之一致性哈希算法
May 26 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使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
javascript复制对象使用说明
2011/06/28 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
python 连续不等式语法糖实例
2020/04/15 Python
python连接mysql有哪些方法
2020/06/24 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
法律七进实施方案
2014/03/15 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
党章学习心得体会2016
2016/01/14 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL