在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登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
php二维数组转成字符串示例
Feb 17 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
php内存缓存实现方法
Jan 24 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
PHP date函数常用时间处理方法
May 11 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
linux下php上传文件注意事项
Jun 11 PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
laravel5.6实现数值转换
Oct 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中的内存管理问题
2011/08/31 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP多文件上传实例
2015/07/09 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
jQuery基础知识小结
2014/12/22 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
python实现无证书加密解密实例
2014/10/27 Python
python中import学习备忘笔记
2017/01/24 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
大数据分析用java还是Python
2020/07/06 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
Python对excel的基本操作方法
2021/02/18 Python
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
日语求职信范文
2013/12/17 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
如何写自我鉴定
2014/03/19 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
公司投资建议书
2014/05/16 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
内科护士节演讲稿
2014/09/11 职场文书
出租房屋协议书
2014/09/14 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis