如何为 php 7.3 安装 ssh2
How to install ssh2 for php 7.3
尝试通过 pecl 安装扩展 ssh2 时,遇到以下错误消息。我使用的是基于 php:7.3.2-fpm
的 docker 容器
重现步骤:
- 安装PHP7.3.2
- 安装软件包
libssh2-1-dev
和 libssh2-1
- 尝试通过
pecl install ssh2-1.1.2
安装 ssh2 扩展
那么如何才能成功安装ssh2
扩展呢?
...
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c: In function 'php_ssh2_fopen_wrapper_tunnel':
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c:1265:42: error: invalid operands to binary == (have 'zend_string {aka struct _zend_string}' and 'int')
if (resource->path && resource->path[0] == '/') {
~~~~~~~~~~~~~~~~~ ^~
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c:1268:8: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
host = resource->path + 1;
^
Makefile:196: recipe for target 'ssh2_fopen_wrappers.lo' failed
make: *** [ssh2_fopen_wrappers.lo] Error 1
ERROR: `make' failed
我发现 this question 没有答案,当我第一次用谷歌搜索时,超级用户将其搁置。我觉得这里比较适合
关于 bugs.php.net 的现有报告,其中用户 goldorakhong 评论从源代码编译它。
使用 docker 文件可以这样做:
RUN cd /tmp \
&& git clone https://git.php.net/repository/pecl/networking/ssh2.git \
&& cd /tmp/ssh2/ \
&& .travis/build.sh \
&& docker-php-ext-enable ssh2
如果您不使用 docker,则需要替换 docker-php-ext-enable
以其他方式注册变量。
Windows 2008 R2 64 位
Wampserver 3.1.9 64 位
PHP 7.3.12
1 - 从 https://windows.php.net/downloads/pecl/releases/ssh2/
下载 php_ssh2.dll 和 php_ssh2.pdb
2 - Select 2019 年 9 月 18 日 11:50 上午 1.2
3 - Select 9/18/2019 10:45 AM 438049 php_ssh2-1.2-7.3-ts-vc15-x64.zip
4 - 解压并复制 php_ssh2.dll 和 php_ssh2.pdb 到 C:/wamp64/bin/php/php7.3.12/ext/
5 - 在 php.ini 中插入行:extension=php_ssh2.dll
6 - 在 wamp 中重启所有服务
尝试通过 pecl 安装扩展 ssh2 时,遇到以下错误消息。我使用的是基于 php:7.3.2-fpm
重现步骤:
- 安装PHP7.3.2
- 安装软件包
libssh2-1-dev
和libssh2-1
- 尝试通过
pecl install ssh2-1.1.2
安装 ssh2 扩展
那么如何才能成功安装ssh2
扩展呢?
...
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c: In function 'php_ssh2_fopen_wrapper_tunnel':
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c:1265:42: error: invalid operands to binary == (have 'zend_string {aka struct _zend_string}' and 'int')
if (resource->path && resource->path[0] == '/') {
~~~~~~~~~~~~~~~~~ ^~
/tmp/pear/temp/ssh2/ssh2_fopen_wrappers.c:1268:8: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
host = resource->path + 1;
^
Makefile:196: recipe for target 'ssh2_fopen_wrappers.lo' failed
make: *** [ssh2_fopen_wrappers.lo] Error 1
ERROR: `make' failed
我发现 this question 没有答案,当我第一次用谷歌搜索时,超级用户将其搁置。我觉得这里比较适合
关于 bugs.php.net 的现有报告,其中用户 goldorakhong 评论从源代码编译它。
使用 docker 文件可以这样做:
RUN cd /tmp \
&& git clone https://git.php.net/repository/pecl/networking/ssh2.git \
&& cd /tmp/ssh2/ \
&& .travis/build.sh \
&& docker-php-ext-enable ssh2
如果您不使用 docker,则需要替换 docker-php-ext-enable
以其他方式注册变量。
Windows 2008 R2 64 位
Wampserver 3.1.9 64 位
PHP 7.3.12
1 - 从 https://windows.php.net/downloads/pecl/releases/ssh2/
下载 php_ssh2.dll 和 php_ssh2.pdb2 - Select 2019 年 9 月 18 日 11:50 上午 1.2
3 - Select 9/18/2019 10:45 AM 438049 php_ssh2-1.2-7.3-ts-vc15-x64.zip
4 - 解压并复制 php_ssh2.dll 和 php_ssh2.pdb 到 C:/wamp64/bin/php/php7.3.12/ext/
5 - 在 php.ini 中插入行:extension=php_ssh2.dll
6 - 在 wamp 中重启所有服务