在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&java(三)
Oct 09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
PHP实现登录验证码校验功能
May 17 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 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中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
js中的this关键字详解
2013/09/25 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
javascript的BOM
2016/05/03 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
python如何调用java类
2020/07/05 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
Java语言程序设计测试题选择题部分
2014/04/03 面试题
企业宣传标语
2014/06/09 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
工作证明格式范文
2015/06/15 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL