在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 相关文章推荐
风格模板初级不完全修改教程
Oct 09 PHP
xajax写的留言本
Nov 25 PHP
PHP header函数分析详解
Aug 06 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
PHP实现简单汉字验证码
Jul 28 PHP
php自定义分页类完整实例
Dec 25 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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编程中八种常见的文件操作方式
2006/11/19 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
nicejforms——美化表单不用愁
2007/02/20 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
请假条范文大全
2014/04/10 职场文书
大专生自荐书范文
2014/06/22 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
经理助理岗位职责
2015/02/02 职场文书
投资申请报告
2015/05/19 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书