我是靠谱客的博主 超帅砖头,最近开发中收集的这篇文章主要介绍mac os 安装php 7.x,MAC OS X 编译安装PHP7,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[toc]

MAC OS X 编译安装PHP7

主要内容包括:php7以上版本的编译,安装,php-fpm配置。

下载源代码

安装

编译源码

注意: 下面第4步中,有一些目录配置要根据自己系统的实际情况填写。

从压缩包解压,得到源码。复制到:/usr/local/src/ 目录

执行 cd /usr/local/src/php-7.x.x

执行 ./buildconf --force

执行

./configure --prefix=/usr/local/php/php7

--with-config-file-path=/usr/local/php/php7/etc

--with-config-file-scan-dir=/usr/local/php/php7/etc/conf.d

--enable-bcmath

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

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

--enable-filter

--enable-fpm

--with-gd

--enable-gd-native-ttf

--with-freetype-dir

--with-jpeg-dir

--with-png-dir

--enable-intl

--enable-mbstring

--with-mcrypt

--enable-mysqlnd

--with-mysql-sock=/tmp/mysql.sock

--with-mysqli=mysqlnd

--with-pdo-mysql=mysqlnd

--with-pdo-sqlite

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

--with-iconv=/usr/local/opt/libiconv

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

--disable-phpdbg

--disable-phpdbg-webhelper

--enable-opcache

--with-openssl=/usr/local/opt/openssl

--enable-simplexml

--with-sqlite3

--enable-xmlreader

--enable-xmlwriter

--enable-zip

--enable-sockets

--with-xmlrpc

编译配置中,有很多依赖都是写死的路径,你可以根据你自己的路径进行配置。

执行 make,make过程中如果报错请参考后面的“编译常见报错解决”

执行 make install

编译常见报错解决

openssl、liconv等依赖包找不到问题

常见报错标志:

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

执行 make 进行编译,在编译过程中,遇到了这个报错:

Undefined symbols for architecture x86_64:

"_PKCS5_PBKDF2_HMAC", referenced from:

_zif_openssl_pbkdf2 in openssl.o

"_SSL_CTX_set_alpn_protos", referenced from:

_php_openssl_setup_crypto in xp_ssl.o

"_SSL_CTX_set_alpn_select_cb", referenced from:

_php_openssl_setup_crypto in xp_ssl.o

"_SSL_get0_alpn_selected", referenced from:

_php_openssl_sockop_set_option in xp_ssl.o

"_SSL_select_next_proto", referenced from:

_server_alpn_callback in xp_ssl.o

"_TLSv1_1_client_method", referenced from:

_php_openssl_setup_crypto in xp_ssl.o

"_TLSv1_1_server_method", referenced from:

_php_openssl_setup_crypto in xp_ssl.o

"_TLSv1_2_client_method", referenced from:

_php_openssl_setup_crypto in xp_ssl.o

"_TLSv1_2_server_method", referenced from:

_php_openssl_setup_crypto in xp_ssl.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

一般报Undefined symbols for architecture x86_64这种错误就是找不到编译依赖软件包,这个时候就要手动指明依赖包的路径,如上,是openssl这个依赖找不到,手动指定路径配置如下修改:

解决办法:

MakeFile 里面找到有 EXTRA_LIBS 的一行,删除值中所有的 -lssl 和 -lcrypto,然后在该行的末尾添加 libssl.dylib 和 libcrypto.dylib 的路径: /usr/local/opt/openssl/lib/libssl.dylib 、 /usr/local/opt/openssl/lib/libcrypto.dylib

更改后的内容为:

EXTRA_LIBS = -lz -lresolv -lmcrypt -lstdc++ -liconv -liconv -lpng -lz -ljpeg -lcurl -lbz2 -lm -lxml2 -lz -licucore -lm -lz -lcurl -lxml2 -lz -licucore -l m -lfreetype -licui18n -licuuc -licudata -licuio -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lz /usr/local/opt/openssl/lib/libssl.dylib /usr/local/opt/openssl/lib/libcrypto.dylib

有一次我升级了liconv,make的时候,报错找不到依赖,所以把上面的值中所有的-liconv删除,在后面加上本地的liconv的路径,配置如下:

EXTRA_LIBS = -lz -lresolv -lmcrypt -lstdc++ -lpng -lz -ljpeg -lcurl -lbz2 -lm -lxml2 -lz -licucore -lm -lz -lcurl -lxml2 -lz -licucore -l m -lfreetype -licui18n -licuuc -licudata -licuio -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lxml2 -lz -licucore -lm -lz /usr/local/opt/openssl/lib/libssl.dylib /usr/local/opt/openssl/lib/libcrypto.dylib /usr/local/opt/libiconv/lib/libiconv.dylib

修改Makefile文件后,需要执行make clean,修改的内容才会生效

C++版本不对问题

常见报错信息:

delegating constructors are permitted only in C++11

解决办法:

打开Makefile,搜索 CXXFLAGS = -g -O2 行并添加 -std = c++11

CXX = g++

CXXFLAGS = -g -O2 -std=c++11 ...(后面如果有其他内容不要修改或者删除)

CXXFLAGS_CLEAN = $(CXXFLAGS)

修改Makefile文件后,需要执行make clean,修改的内容才会生效

配置

配置FPM和ini

sudo mkdir -pv /usr/local/php/php7/etc/conf.d

sudo cp -v ./php.ini-production /usr/local/php/php7/lib/php.ini

sudo cp -v ./sapi/fpm/www.conf /usr/local/php/php7/etc/php-fpm.d/www.conf

sudo cp -v ./sapi/fpm/php-fpm.conf /usr/local/php/php7/etc

sudo ln -s /usr/local/php/php7/sbin/php-fpm /usr/sbin/php-fpm ;如果已经存在,要先删除原来的php-fpm

sudovim /usr/local/php/php7/etc/php-fpm.conf ;去掉pid = run/php-fpm.pid前面的注释

配置OPcache

sudovim /usr/local/php/php7/etc/conf.d/modules.ini

输入以下内容后保存:

# Zend OPcache

zend_extension=opcache.so

配置php命令

执行where php 查看当前环境中的php在哪些路径,替换掉路径中的phar 、phar.phar 、 php 、 php-cgi 、 php-config 、phpize。通过以下步骤来完成

先删掉路径下的phar 、phar.phar 、 php 、 php-cgi 、 php-config 、phpize,如果不放心,也可以先mv替换名字

执行以下命令

sudo ln -s /usr/local/php/php7/bin/phar /usr/local/bin/phar

sudo ln -s /usr/local/php/php7/bin/phar.phar /usr/local/bin/phar.phar

sudo ln -s /usr/local/php/php7/bin/php /usr/local/bin/php

sudo ln -s /usr/local/php/php7/bin/php-cgi /usr/local/bin/php-cgi

sudo ln -s /usr/local/php/php7/bin/php-config /usr/local/bin/php-config

sudo ln -s /usr/local/php/php7/bin/phpize /usr/local/bin/phpize

完成上诉步骤后,执行: php -v,校验版本

启动、停止、重启php-pfm

启动: php-fpm --fpm-config /usr/local/php/php7/etc/php-fpm.conf

停止: kill -INT `cat /usr/local/php/php7/var/run/php-fpm.pid

重启: kill -USR2 `cat /usr/local/php/php7/var/run/php-fpm.pid

如果觉得每次执行这么长的命令很麻烦,可以将其写入脚本或者在.zshrc文件中定义为alias。例如:

aliasphpfpm-start="php-fpm --fpm-config /usr/local/php/php7/etc/php-fpm.conf"

aliasphpfpm-stop=/usr/local/etc/php/fpm-stop.sh

aliasphpfpm-restart=/usr/local/etc/php/fpm-restart.sh

cat /usr/local/etc/php/fpm-stop.sh

#!/bin/sh

echo "Stopping php-fpm..."

kill -INT `cat /usr/local/php/php7/var/run/php-fpm.pid`

echo "php-fpm stoped"

exit0

cat /usr/local/etc/php/fpm-restart.sh

#!/bin/sh

echo "ReStarting php-fpm..."

kill -USR2 `cat /usr/local/php/php7/var/run/php-fpm.pid`

echo "php-fpm restarted"

exit0

最后

以上就是超帅砖头为你收集整理的mac os 安装php 7.x,MAC OS X 编译安装PHP7的全部内容,希望文章能够帮你解决mac os 安装php 7.x,MAC OS X 编译安装PHP7所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部