在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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
php定界符
Jun 19 PHP
destoon常用的安全设置概述
Jun 21 PHP
php面象对象数据库操作类实例
Dec 02 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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中常见数据类型的汇总分享
2014/01/06 PHP
php常用文件操作函数汇总
2014/11/22 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Javascript 二维数组
2009/11/26 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
jQuery中not()方法用法实例
2015/01/06 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
学习Python需要哪些工具
2020/09/04 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
大学三年的自我评价
2013/12/25 职场文书
党校培训思想汇报
2013/12/30 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书