MAC下PHP7.1.23安装intl3.0.0

  **** 欢迎转载,非商业转载请注明出处,商业转载请联系 forzhangy@163.com ****

 

  最近帮人做站,接触到PrestaShop 1.7,然后想自己先在本地搭一个环境起来,结果遇到坑了。

  这个坑是长这样子滴:

    我现在用的是macOS Mojave (10.14.4),自带的PHP 7.1.23 (cli) (built: Feb 22 2019 22:08:13) ( NTS )

    prestashop安装的时候,提示需要intl插件,然而....坑来了,intl在安装的时候报错提示缺少头文件"php_smart_str.h",这玩意儿在现行的php版本中已经没有了,替代的是"php_smart_string.h"。这都不是重点,重点是intl这个插件貌似没有更新了,它只认"php_smart_str.h"这个文件。从头到尾,这个坑我爬了三天,还是太年轻,技术积累太差了。

  背景交待完毕,进入正题,这个坑我是怎么填的呢,如下:

 

  先把前置环境配一下,可能你需要一个ICU和Autoconf,网络状况不好的话,可能会下载失败,多试几次即可

  安装扩展之前,把这件事情做一下 Download PEAR 这一段来自:

-----------------------------------------

(作者:jason 链接:https://www.zhihu.com/question/37469140/answer/109028380 来源:知乎)    

curl -O http://pear.php.net/go-pear.phar
sudo php -d detect_unicode=0 go-pear.phar

   Configure and Install PEAR

   You should now be at a prompt to configure PEAR.

  1. Type 1 and press return.
  2. Enter:

    /usr/local/pear
    
  3. Type 4 and press return.
  4. Enter:

    /usr/local/bin
    
  5. Press return

  You should be able to type:

    pear version
----------------------------

开始安装扩展

Installing ICU

cd ~ && curl -O http://download.icu-project.org/files/icu4c/52.1/icu4c-52_1-src.tgz
tar -zxvf icu4c-52_1-src.tgz
cd icu/source
./runConfigureICU MacOSX
make
sudo make install

如果你有如下报错,你可以去找其他版本的ICU   http://site.icu-project.org/download

ld: 304 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1

接着,安装autoconf

注意:autoconf-2.69不固定,看你下载是哪个版本

cd ~ && curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar -zxvf autoconf-latest.tar.gz
cd autoconf-2.69
./configure
make
sudo make install

 

安装完了,清除安装包

cd ~
rm -rf icu
rm -rf autoconf-2.69

 

接下来,配置一下php.ini

sudo cp /etc/php.ini.default /etc/php.ini
sudo vi /etc/php.ini

在php.ini中添加两行

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20160303"
extension=intl.so
*no-debug-non-zts-20160303 这里可能随版本不同,后面数字也有不同,注意查看*

 

前置技能加满,开始大招

================================

  1. 到php的官网下载7.1.3的版本,这个版本中还保留着intl扩展,我直接下载了tar.gz压缩格式 https://www.php.net/distributions/php-7.1.3.tar.gz

  2.自己手动编译得到扩展  intl.so

    步骤如下:

      1)进入到php的 ext/intl 目录下,执行  phpize, 权限不够加sudo,正常的话,应该是以下信息

sudo phpize
Password:
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

 

      2)在当前目录下执行 ./configure --with-php-config=/usr/bin/php-config   (当前使用的php,不知道的话执行where php-config)

      

 

      3)还是当前目录,执行 make ,若报错,可参考这里 https://segmentfault.com/q/1010000010678737

 

      4)再执行 make install,还是老话,权限不够在前面加sudo

 

      5)会在intl/module目录下看到有个intl.so文件,复制这个文件到要使用的php/extentions目录下即可。

 

参考资料:

 

https://codingexplained.com/dev-ops/mac/installing-php-intl-extension-os-x-mavericks#comment-42246

https://www.zhihu.com/question/37469140

http://www.php.cn/php-weizijiaocheng-387299.html

https://segmentfault.com/q/1010000010678737      

 

转载于:https://www.cnblogs.com/daoxian/p/10910614.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值