坑。。。。。。
因为PHP缺少INTL扩展,然后需要安装依赖ICU,
搜索找到后,下载,压缩包是tgz格式,好吧,也能用。解压失败
找了一下还有zip 。这回正常了。然后解压。进入安装,又报如下错误:
-bash: ./configure: /bin/sh^M: 坏的解释器: 没有那个文件或目录,什么鬼这是
用cat -A configure 打开看到文件后面都有^M,看来是在windows下保存的。
sed -i 's/\r$//' configure
sed -i 's/\r$//' install_sh
sed -i 's/\r$//' runConfigureICU
修复三个文件。继续,又报错。。
//注意,后续可能在编译其他文件时还会出现类似问题,
如:
checking for ICU version numbers...release65.1,library65.1,unicodeversion12.1configure:error: cannot run /bin/sh ./config.sub
checkingforICUversionnumbers...release65.1,library65.1,unicodeversion12.1checkingbuildsystemtype... ./config.guess: line4: $'\r': commandnotfound
同样的,我们对这些文件依次执行 sed -i's/\r$//'"file_name"即可
有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。可以使用命令sed -i 's/\r$//' urfile 。
安装PHP intl扩展库安装
pecl 方式安装
执行 # /usr/local/php/bin/pecl install intl-3.0.0
安装过程中会让您指定ICU库的位置,我的位置是 /usr/local/icu ,安装完成后将 extension=intl.so 加入到php.ini文件中,然后执行 /etc/init.d/php-fpmrestart 使php.ini配置生效。
最后用# php -m | grep intl 或 phpinfo() 查看intl扩展是否安装成功