在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中用文本文件做数据库的实现方法
Mar 27 PHP
轻松修复Discuz!数据库
May 03 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php中设置多级目录session的问题
Aug 08 PHP
PHP 时间日期操作实战
Aug 26 PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
php和html的区别点详细总结
Sep 24 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
python聊天程序实例代码分享
2013/11/18 Python
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
如何完美的建立一个python项目
2020/10/09 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
学生自我评价范文
2014/02/02 职场文书
个性车贴标语
2014/06/24 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
旷课检讨书范文
2015/01/27 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技
React更新渲染原理深入分析
2022/12/24 Javascript