PHP7 中的 PECL yaml
PECL yaml in PHP7
PHP7 中的 pecl yaml 存在一些问题(请参阅下面的错误日志)。我能看到的是:https://pecl.php.net/package/yaml 有一些 2.0 的 RC 应该可以解决这个问题......我目前 运行 命令:
pecl install yaml && echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini.
但是我猜这不会安装 RC 版本。 如何安装 RC? 是否有参数可以提供?
我可以google以下解决方案(未测试):
pear config-set preferred_state beta
但我猜这将为所有扩展设置一个全局测试状态。我只想将此扩展安装为 beta..
错误日志
running: make
/bin/bash /tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/libtool --mode=compile cc -I. -I/tmp/pear/temp/yaml -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/include -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/main -I/tmp/pear/temp/yaml -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/yaml/yaml.c -o yaml.lo
mkdir .libs
cc -I. -I/tmp/pear/temp/yaml -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/include -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/main -I/tmp/pear/temp/yaml -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/yaml/yaml.c -fPIC -DPIC -o .libs/yaml.o
In file included from /tmp/pear/temp/yaml/yaml.c:35:0:
/tmp/pear/temp/yaml/php_yaml.h:56:40: fatal error: ext/standard/php_smart_str.h: No such file or directory
#include <ext/standard/php_smart_str.h>
^
compilation terminated.
Makefile:195: recipe for target 'yaml.lo' failed
make: *** [yaml.lo] Error 1
ERROR: `make' failed
因此,在进行了一些额外的谷歌搜索后,我通过搜索如何安装 beta 包找到了安装方法,而不是像我最初寻找的那样使用 RC。face-palm
http://php.net/manual/en/install.pecl.pear.php
..所以正确的命令是:
pecl install yaml-beta && echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini
稳定版 2.0.0 于 2016 年 9 月 24 日发布。仍然支持版本1.x.x,所以需要指定版本号,eg:
pecl install yaml-2.0.0 && echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini
查找最新版本
到目前为止还不错,答案在我的 Centos 7 PHP 7.
上不起作用
但我知道该怎么做:
yum install php70w-devel php70w-pear zlib-devel curl-devel gcc
yum install libyaml-devel
pecl install yaml-beta
我希望这对其他使用 Centos 的人也有帮助。
在 ubuntu 16.04 (PHP 7.0) 上,您可以这样做:
apt install libyaml-dev php-dev php-pear
pecl install yaml-2.0.0
echo "extension=yaml.so" > /etc/php/7.0/cli/conf.d/20-yaml.ini
echo "extension=yaml.so" > /etc/php/7.0/apache2/conf.d/20-yaml.ini
php-pear
需要使用 pecl
命令
php-dev
需要 phpize
命令(由 pecl 使用)
libyaml-dev
需要...yaml 库
PHP7 中的 pecl yaml 存在一些问题(请参阅下面的错误日志)。我能看到的是:https://pecl.php.net/package/yaml 有一些 2.0 的 RC 应该可以解决这个问题......我目前 运行 命令:
pecl install yaml && echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini.
但是我猜这不会安装 RC 版本。 如何安装 RC? 是否有参数可以提供?
我可以google以下解决方案(未测试):
pear config-set preferred_state beta
但我猜这将为所有扩展设置一个全局测试状态。我只想将此扩展安装为 beta..
错误日志
running: make
/bin/bash /tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/libtool --mode=compile cc -I. -I/tmp/pear/temp/yaml -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/include -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/main -I/tmp/pear/temp/yaml -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/yaml/yaml.c -o yaml.lo
mkdir .libs
cc -I. -I/tmp/pear/temp/yaml -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/include -I/tmp/pear/temp/pear-build-defaultuserPVGidl/yaml-1.2.0/main -I/tmp/pear/temp/yaml -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/yaml/yaml.c -fPIC -DPIC -o .libs/yaml.o
In file included from /tmp/pear/temp/yaml/yaml.c:35:0:
/tmp/pear/temp/yaml/php_yaml.h:56:40: fatal error: ext/standard/php_smart_str.h: No such file or directory
#include <ext/standard/php_smart_str.h>
^
compilation terminated.
Makefile:195: recipe for target 'yaml.lo' failed
make: *** [yaml.lo] Error 1
ERROR: `make' failed
因此,在进行了一些额外的谷歌搜索后,我通过搜索如何安装 beta 包找到了安装方法,而不是像我最初寻找的那样使用 RC。face-palm
http://php.net/manual/en/install.pecl.pear.php
..所以正确的命令是:
pecl install yaml-beta && echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini
稳定版 2.0.0 于 2016 年 9 月 24 日发布。仍然支持版本1.x.x,所以需要指定版本号,eg:
pecl install yaml-2.0.0 && echo "extension=yaml.so" > /usr/local/etc/php/conf.d/ext-yaml.ini
查找最新版本
到目前为止还不错,答案在我的 Centos 7 PHP 7.
上不起作用但我知道该怎么做:
yum install php70w-devel php70w-pear zlib-devel curl-devel gcc
yum install libyaml-devel
pecl install yaml-beta
我希望这对其他使用 Centos 的人也有帮助。
在 ubuntu 16.04 (PHP 7.0) 上,您可以这样做:
apt install libyaml-dev php-dev php-pear
pecl install yaml-2.0.0
echo "extension=yaml.so" > /etc/php/7.0/cli/conf.d/20-yaml.ini
echo "extension=yaml.so" > /etc/php/7.0/apache2/conf.d/20-yaml.ini
php-pear
需要使用pecl
命令php-dev
需要phpize
命令(由 pecl 使用)libyaml-dev
需要...yaml 库