Here's how I installed WP-CLI with ISPCongfig 3, and it's available globally for clients with jailkit installed. First I followed this guide to allow PHP in SSH for jailed users - http://www.faqforge.com/linux/add-php-in-ssh-jail-ispconfig-3/ The I ran these commands: Code: wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar --no-check-certificate php5 wp-cli.phar --info chmod +x wp-cli.phar mv wp-cli.phar /usr/bin/wp Code: nano /etc/jailkit/jk_init.ini Add to the end of file Code: [wp] comment = WordPress Command Line executables = /usr/bin/wp includesections = php Run the command: Code: jk_init -c /etc/jailkit/jk_init.ini -f -k -j /var/www/clients/client1/web1 wp Next, login to ISPConfig 3 and navigate to - ISPConfig 3 > System (Tab) > System > Server Config > (select server) > Jailkit Add the word "wp" separated by a white space at the end of the "Jailkit chroot app sections" field. SSH to the jailed shell and test. Code: [email protected]:/usr/bin$ php5 wp --info PHP binary: /usr/bin/php5 PHP version: 5.6.24-0+deb8u1 php.ini used: /etc/php5/cli/php.ini WP-CLI root dir: phar://wp-cli.phar WP-CLI packages dir: WP-CLI global config: WP-CLI project config: WP-CLI version: 0.24.0 Hope this helps someone. If anyone sees any security issues, please let me know.
Issues now. Code: [email protected]:/web$ wp --info /usr/bin/env: php: No such file or directory [email protected]:/web$ ls -la /usr/bin/e* -rwxr-xr-x 2 root root 31240 Mar 14 2015 /usr/bin/env Any ideas? Do I need to run the command: Code: jk_cp -k -j /var/www/clients/client1/web1 /usr/bin/wp
can't help much but in your first working example you use php5 and in the second non-working scenario it seems wp is looking for php not php5. So if php isn't in your path, how about you symlink the php5 variable to php?
Adding the path /usr/bin/php to the PHP > executables section of the jk_init.ini file fixed the issue. Code: [php] comment = the php interpreter and libraries executables = /usr/bin/php5, /usr/bin/php directories = /usr/lib/php5, /usr/share/php, /usr/share/php5, /etc/php5, /usr/share/php-geshi, [B]/usr/share/zoneinfo[/B] includesections = env But, there is a new issue (ofcoarse). Code: [email protected]:/web$ wp plugin update --all PHP Notice: date_default_timezone_set(): Timezone ID 'UTC' is invalid in phar:///usr/bin/wp/php/wp-settings-cli.php on line 48 Error: Error establishing a database connection
I googled that, can you check your php.ini date.timezone directive? http://php.net/manual/en/function.date-default-timezone-set.php
Make sure you are connecting to 127.0.0.1 from cli, there is no socket file to talk to the mysql server in your jailkit environment.
Could this be the answer? https://www.howtoforge.com/communit...k-when-linking-mysqld-sock.51096/#post-249559
yes, adding the socket into your jailkit environment would solve the same problem. I think unix sockets perform better than tcp (127.0.0.1), but for just the wp cli command it likely makes very little difference which route you go.
Agreed - Thanks Jessie! I believe that to be the warning issue as well. Thanks Ovidiu! I will confirm.
I added mysql to the jailkit jk_init.ini file. Code: [mysql] comment = mysql client executables = /usr/bin/mysql Updated the jail. Code: jk_init -c /etc/jailkit/jk_init.ini -f -k -j /var/www/clients/client1/web1 mysql And added mysql to the Jailkit section of ISPConfig 3. For testing only, I changed the wp-config.php file DB_HOST and it believe Jessie is correct. Code: /** MySQL hostname */ define( 'DB_HOST', '127.0.0.1:3306' ); I don't know how to get WP-CLI use TCP connection without changing the wp-config.php file. If anyone can advise please. I also had to use the UTC +/- timezone in WordPress only. Not America_Los_Angeles (in my case). Now there is another error. Code: [email protected]:/web$ wp plugin update --all PHP Notice: date_default_timezone_set(): Timezone ID 'UTC' is invalid in phar:///usr/bin/wp/php/wp-settings-cli.php on line 48 Enabling Maintenance mode... Downloading update from https://downloads.wordpress.org/plugin/wordpress-seo.3.4.2.zip... Using cached file '/home/keuqbtwsp1121/.wp-cli/cache/plugin/wordpress-seo-3.4.2.zip'... Unpacking the update... PHP Fatal error: date(): Timezone database is corrupt - this should *never* happen! in /web/wp-admin/includes/class-wp-filesystem-direct.php on line 500 Fatal error: date(): Timezone database is corrupt - this should *never* happen! in /web/wp-admin/includes/class-wp-filesystem-direct.php on line 500 Does this look like the fix? - http://ivanbayan.com/index.php/2013...database-is-corrupt-this-should-never-happen/ I have never used pecl. That's why I am asking prior to trying.
Success! I had the [ B ] tags in the jk_init.ini file wrapped around the /usr/share/zoneinfo Once I removed them and updated the jail, it worked. Now the focus is on getting a mysql TCP connection.
for the production website you might want to continue using a unix socket .. can you specify the database host on the command-line? or even specify an alternative wp-config.php (one for web, one for cli)?
I was able to make it work now by modifying the wp-config.php file under "DB_HOST" with an "if" and "else" statement. Code: /** Tell WP-CLI to use TCP instead of socket connection */ if ( defined( 'WP_CLI' ) && WP_CLI ) { /** MySQL hostname for WP-CLI */ define('DB_HOST', '127.0.0.1:3306'); } else { /** MySQL hostname */ define('DB_HOST', 'localhost:3306'); } It feels good to finally get it working. Thanks again for all the help! Reference: https://github.com/wp-cli/wp-cli/issues/2402#issuecomment-174083900