在Mac OS上自行编译安装Apache服务器和PHP解释器

所属分类: 网络编程 / PHP编程 阅读数: 398
收藏 0 赞 0 分享

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 中move_uploaded_file 上传中文文件名失败

这篇文章主要介绍了PHP 中move_uploaded_file 上传中文文件名失败的原因分析及解决方法 ,需要的朋友可以参考下
收藏 0 赞 0 分享

CentOS7编译安装php7.1的教程详解

这篇文章主要介绍了CentOS7编译安装php7.1的教程详解,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP信号处理机制的操作代码讲解

在本篇文章里小编给大家分享了关于PHP信号处理机制的操作的相关知识点内容,需要的朋友们学习下。
收藏 0 赞 0 分享

ThinkPHP3.2.3框架邮件发送功能图文实例详解

这篇文章主要介绍了ThinkPHP3.2.3框架邮件发送功能,结合图文与实例形式详细分析了基于thinkPHP框架进行邮件发送的相关原理、配置及操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

一文掌握PHP Xdebug 本地与远程调试(小结)

这篇文章主要介绍了一文掌握PHP Xdebug 本地与远程调试(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Laravel路由研究之domain解决多域名问题的方法示例

这篇文章主要介绍了Laravel 路由研究之domain解决多域名问题的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

PHP设计模式之策略模式原理与用法实例分析

这篇文章主要介绍了PHP设计模式之策略模式原理与用法,结合实例形式较为详细的分析了策略模式的概念、原理及php实现与使用策略模式的相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

php使用lua+redis实现限流,计数器模式,令牌桶模式

这篇文章主要介绍了php使用lua+redis实现限流,计数器模式,令牌桶模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Laravel多域名下字段验证的方法

这篇文章主要给大家介绍了关于Laravel多域名下字段验证的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

PHP中quotemeta()函数的用法讲解

今天小编就为大家分享一篇关于PHP中quotemeta()函数的用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享
查看更多