在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+MSSQL分页的例子
Oct 09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
php SQL Injection with MySQL
Feb 27 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
PHP架构及原理知识点详解
Dec 22 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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设计模式 Builder(建造者模式)
2011/06/26 PHP
PHP运行模式的深入理解
2013/06/03 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
Vue项目中如何引入icon图标
2018/03/28 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
python 字典(dict)按键和值排序
2016/06/28 Python
Sanic框架应用部署方法详解
2018/07/18 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
python 回溯法模板详解
2020/02/26 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
三年大学生活自我鉴定
2014/01/21 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
2014年公司工作总结
2014/11/22 职场文书
先进事迹材料范文
2014/12/29 职场文书
岗位聘任报告
2015/03/02 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
总账会计岗位职责
2015/04/02 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
Python几种酷炫的进度条的方式
2022/04/11 Python