在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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
php 接口类与抽象类的实际作用
Nov 26 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 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
一个程序下载的管理程序(三)
2006/10/09 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
Python中查看文件名和文件路径
2017/03/31 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python ---lambda匿名函数介绍
2019/03/13 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
J2EE面试题大全
2016/08/06 面试题
元旦晚会主持词
2014/03/24 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
大学学生会竞选稿
2015/11/19 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书