AC-5

某SEの雑記帳

PHPのssh2.soのエラー解消

      2016/01/20

PHPを5.6にアップデートしてバージョンを確認したら、下記のようなエラーが出るようになってしまいました。

[root@test]# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/ssh2.so' - /usr/lib64/php/modules/ssh2.so: undefined symbol: php_checkuid in Unknown on line 0←ssh2.soのエラー
PHP 5.6.16 (cli) (built: Nov 26 2015 08:01:30)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

下記解消手順

ssh2をソースからコンパイルする必要がありますので手順を記載します。

[root@test]# cd /home/test←適当な作業ディレクトリへ移動
[root@test test]# wget http://pecl.php.net/get/ssh2←ダウンロード
[root@test test]# tar -zxvf ssh2←解凍
package.xml
ssh2-0.12/config.m4
ssh2-0.12/ssh2.c
ssh2-0.12/php_ssh2.h
ssh2-0.12/ssh2_fopen_wrappers.c
ssh2-0.12/ssh2_sftp.c
ssh2-0.12/LICENSE
[root@test test]# cd ssh2-0.12←解凍したディレクトリへ移動
[root@test test]# /usr/bin/phpizePHPにモジュールを追加するコマンドphpize
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.←php-develが必要だとエラーになる
[root@test test]# yum install php-devel --enablerepo=remi,remi-php56←php-develインストール
[root@test test]# /usr/bin/phpize←再度phpize
[root@test test]# ./configure --with-ssh2 --with-php-config=/usr/bin/php-config←オプションを付けてコンパイル(php-configのパスが違う時はfind / -name "php-config*"で検索)
[root@test test]# make
[root@test test]# make install
[root@test test]# service httpd restart

確認

[root@test]# php -v
PHP 5.6.16 (cli) (built: Nov 26 2015 08:01:30)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

 - Linux