Archive for category PHP
Installing the ssh2 PHP extension, with PHP 5.3
Posted by Adam in Fixing Errors, Linux, PHP, Programming on Sunday March 21, 2010
WARNING: Please read before continuing ▼
Difficulty: Moderate
Time: ~5 Minutes
Last Updated: 21st March 2010
Applies to: *NIX
Currently, due to an API change ssh2 will not install via pecl. Despite being a one-line fix, and 5.3 being out for some months now, the maintainers have neglected to make their extension compatible with PHP 5.3
If you recieve an error similar to:
1 2 | /tmp/pear/download/ssh2-0.11.0/ssh2.c:52: error: duplicate "static" /tmp/pear/download/ssh2-0.11.0/ssh2.c: In function "zif_ssh2_methods_negotiated": |
Then you are affected. To fix this, you need to download and extract the ssh2 package:
1 2 | pecl download channel://pecl.php.net/ssh2-<version> tar xvf ssh-<version>.tar |
Open up ssh2-<version>/ssh2.c and look for the following block around line 50:
1 2 3 4 5 6 7 8 | #ifdef ZEND_ENGINE_2 static ZEND_BEGIN_ARG_INFO(php_ssh2_first_arg_force_ref, 0) ZEND_ARG_PASS_INFO(1) ZEND_END_ARG_INFO() #else static unsigned char php_ssh2_first_arg_force_ref[] = { 1, BYREF_FORCE }; #endif |
From that block, you need to remove the first “static” so it looks like this:
1 2 3 4 5 6 7 | #ifdef ZEND_ENGINE_2 ZEND_BEGIN_ARG_INFO(php_ssh2_first_arg_force_ref, 0) ZEND_ARG_PASS_INFO(1) ZEND_END_ARG_INFO() #else static unsigned char php_ssh2_first_arg_force_ref[] = { 1, BYREF_FORCE }; #endif |
After you’ve done this, simply repackage and install:
1 2 | pecl package package.xml pecl install -f ssh2-<version>.tgz |