mac php安装路径,(MAC) PHP安装和配置

下载资源包

安装参考文档:编译 PHP

git clone http://git.php.net/repository/php-src.git

cd php-src

git checkout PHP-7.3

# 或者下载其他的版本资源:git checkout PHP-7.0

但是在checkout的时候需要注意的是bison的版本,具体bison版本对应PHP版本如下:

bison,用于生成 PHP 解析器。

2.4 或更高版本(对于 PHP 7.0-7.3)

3.0 或更高版本(对于 PHP 7.4)

如果提示当前bison版本不匹配,可以尝试配置.bash_profile PATH=/usr/local/opt/bison/bin/:$PATH

编译安装

执行步骤:

# 如果./configure 不存在,则先执行 `./buildconf`。

# 重新生成 ./configure 执行 `rm -f ./configure && ./buildconf --force`

# ./configure的时候出错记录:

# unrecognized options: --enable-safe-mode, --enable-gd-native-ttf,--with-mcrypt=shared

# configure: error: Couldn't find pcre2-config [--with-pcre-regex=shared]

rm -f ./configure && ./buildconf --force

# 简易配置

./configure -q --prefix=/usr/local/php7.3

sudo make ZEND_EXTRA_LIBS='/usr/local/opt/libiconv-1.16/lib/libiconv.dylib'

sudo make install

# 指定配置项配置, 按以下配置和指定ZEND_EXTRA_LIBS make成功

./configure -q --prefix=/usr/local/php7.3 \

--enable-fpm \

--enable-cli \

--enable-ftp \

--enable-zip \

--enable-calendar \

--enable-dba \

--enable-gd-jis-conv \

--enable-mbstring \

--enable-pcntl \

--enable-shmop \

--enable-sysvsem \

--enable-sysvshm \

--enable-sysvmsg \

--enable-sockets \

--enable-exif \

--enable-soap \

--enable-wddx \

--enable-mysqlnd \

--enable-zend-signals \

--enable-json \

--enable-dom \

--enable-dba \

--enable-xmlreader --enable-xmlwriter --enable-xml \

--enable-inline-optimization \

--enable-hash \

--enable-phar \

--enable-filter \

--enable-pdo \

--with-pdo-mysql=shared,mysqlnd \

--with-pdo-sqlite=shared \

--with-mhash=shared \

--with-libxml-dir=shared \

--with-zlib-dir=/usr/local/opt/zlib \

--with-bz2=/usr/local/opt/bzip2/ \

--with-curl=/usr/local/opt/curl \

--with-pcre-jit \

--with-openssl-dir=/usr/local/opt/openssl@1.1 \

--with-gd=shared \

--with-jpeg-dir=/usr/local/opt/jpeg \

--with-png-dir=/usr/local/opt/libpng \

--with-freetype-dir=/usr/local/opt/freetype \

--with-pic \

--with-icu-dir=/usr/local/opt/icu4c \

--with-xsl=shared \

--with-gettext=shared \

--with-mysqli=shared \

# --enable-maintainer-zts \

# --enable-debug \

# --enable-maintainer-zts 和 --enable-debug 会决定最终生成的扩展目录名称。

# 比如:/usr/local/php7.3/lib/php/extensions/debug-non-zts-20180731/

# --with-tidy=shared \

# --enable-intl \

# sudo make -jN #N是系统内核数,mac通过`sysctl machdep.cpu | grep thread`,我的是4 。

# 前面iconv的问题在make的时候手动指定,或者修改Makefile也行。

sudo make ZEND_EXTRA_LIBS='/usr/local/opt/libiconv-1.16/lib/libiconv.dylib' -j4

sudo make install

但是有些时候这么安装可能并不符合你的需求,我们需要定制化一些参数。

首先需要查看./configure 命令可接受的参数:./configure -h,然后分析这些参数。

问题及解决

iconv问题

这次编译安装给我带来最大困扰的就是iconv的问题。在启用配置--enable-cli||--enable--fpm时都会去找iconv库。如果找不到的话就会报错。

首先碰见这个问题的思路是采取解决make: *** [sapi/cli/php] Error 1这个问题的方案,但是实践证明这里还会存在一些MAC自带的坑,以及一些我还无法描述的坑。如果执行make失败,可能的原因如下:

(1)–with-iconv=DIR,DIR指定了MAC通过brew安装的libiconv路径

brew install libiconv # brew reinstall libiconv

./configure -q --prefix=/usr/local/php7.3 --with-iconv=/usr/local/opt/libiconv

make # 报错

(2)–with-iconv-dir=DIR,DIR指定了MAC通过brew安装的libiconv路径,还是报错

(3)通过修改Makefile指定MAC默认的/usr/local/opt/libiconv/lib/libiconv.dylib,还是报错

(4)通过make ZEND_EXTRA_LIBS='/usr/local/opt/libiconv/lib/libiconv.dylib',还是报错

到(3)、(4)这里我已经怀疑不是我的解决方法有问题,而是MAC通过brew安装的libiconv有问题。关于第(1)、(2)的问题我抱有很大的疑惑,因为在指定OpenSSL的DIR时也是类似的--with-openssl-dir=/usr/local/opt/openssl@1.1但是似乎没有出现OpenSSL的问题。可能是我目前还没碰到罢了,原因不明!

竟然可能是libiconv的问题,那么解决思路就是重新编译安装一个libiconv。

(5) 正确执行过程如:

# 编译安装libiconv最新版本

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz

tar -zxvf libiconv-1.16.tar.gz && cd libiconv-1.16

./configure --prefix=/usr/local/opt/libiconv-1.16 && make && make install

# 编译安装PHP

./configure -q --prefix=/usr/local/php7.3

sudo make ZEND_EXTRA_LIBS='/usr/local/opt/libiconv-1.16/lib/libiconv.dylib' -j4

make test && sudo make install

1、如下报错,原因是--with-iconv-dir找不到iconv的类库,改成--with-iconv依然报错!

./configure -q –prefix=/usr/local/php7.3 –with-iconv-dir=/usr/local/opt/libiconv-1.16

2、如果安按照(5)执行依然失败,试试

nm /usr/local/opt/libiconv-1.16/lib/libiconv.dylib

参考

make: *** [sapi/cli/php] Error 1

这里是找不到iconv扩展(此方法也可以解决其他找不到路径的问题)。

(1)第一种办法是在Makefile文件中的EXTRA_LIBS这行找到-liconv然后替换成libiconv的绝对路径/usr/local/opt/libiconv/lib/libiconv.dylib

(2)在执行 make 时指定iconv的扩展:

./configure -q --prefix=/usr/local/php7.3

sudo make ZEND_EXTRA_LIBS='/usr/local/opt/libiconv/lib/libiconv.dylib'

make: *** [sapi/cgi/php-cgi] Error 1

执行./configure是指定参数--disable-cgi

configure: error: Please reinstall the BZip2 distribution

brew reinstall bzip2

修改配置--with-bz2=/usr/local/opt/bzip2/

cURL version 7.15.5 or later is required to compile php with cURL support

brew reinstall curl

brew info curl

这个问题和bzip2的问题类似,最终也是通过配置--with-curl=/usr/local/opt/curl 不再报错!

configure: error: Cannot find OpenSSL’s

修改配置--with-openssl-dir=/usr/local/opt/openssl@1.1,不再报错!

configure: error: Unable to detect ICU…

brew search icu

brew reinstall icu4c

configure: error:

Due to the way that loadable modules work on OSX/Darwin, you need to

compile the PDO package statically into the PHP core.

暂且移除该配置--enable-pdo=shared

--enable-pdo=shared

configure: error: Cannot find libtidy

MAC上看到的几个似乎不是tidy库

make: *** [sapi/fpm/php-fpm] Error 1

导致错误的原因似乎还是iconv。

make: *** [ext/intl/intl_convertcpp.lo] Error 1

_executor_globals_id

在我本地有两个PHP资源包,一个是7.1,一个是7.3 。7.1的是不知道什么时候下载的,7.3的是通过以上git下载的。然后在原来7.1下和7.3下如上编译安装都成功了。但是在7.1下启动--enable-maintainer-zts增加扩展mysqli.so时报错。于是移除zts扩展,再重新编译安装,又报另外一种错误:Symbol not found: _mysqlnd_global_stats。但是在7.3下是没有报任何错误。可能原因就是资源包的问题了。

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值