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