[wp-trac] [WordPress Trac] #29635: 4.0 - Installation step 0 fails, if FS_METHOD is set to ssh2 in wp-config.php

WordPress Trac noreply at wordpress.org
Sun Sep 14 16:21:37 UTC 2014


#29635: 4.0 - Installation step 0 fails, if FS_METHOD is set to ssh2 in wp-
config.php
--------------------------+--------------------
 Reporter:  scibuff       |       Owner:
     Type:  defect (bug)  |      Status:  new
 Priority:  low           |   Milestone:  4.0.1
Component:  General       |     Version:  4.0
 Severity:  normal        |  Resolution:
 Keywords:                |     Focuses:
--------------------------+--------------------

Old description:

> Steps to reproduce:
>
> 1.) create a new WP installation (with a brand new database) under
> /var/www/mysite
> 2.) create a new user for ftp, e.g.
>
>     sudo adduser wpuser
>     sudo chown -R wpuser:www-data /var/www/mysite
>     sudo su - wpuser
>     ssh-keygen -t rsa -b 4096 -C wpuser@<myhost>
>     sudo chown wpuser:www-data /home/wpuser/wp_rsa*
>     sudo chmod 0640 /home/wpuser/wp_rsa*
>     sudo mkdir /home/wpuser/.ssh
>     sudo chown wpuser:wpuser /home/wpuser/.ssh/
>     sudo chmod 0700 /home/wpuser/.ssh/
>     sudo cp /home/wpuser/wp_rsa.pub /home/wpuser/.ssh/authorized_keys
>     sudo chown wpuser:wpuser /home/wpuser/.ssh/authorized_keys
>     sudo chmod 0644 /home/wpuser/.ssh/authorized_keys
>     #
>     #you may need to install some packages
>     #sudo apt-get update
>     #sudo apt-get install -y php5-dev libssh2-1-dev libssh2-php
>     #
>     sudo service apache2 restart
>
> 3.) set the following values in wp-config.php
>
>     define('FS_METHOD', 'ssh2');
>     define('FTP_PUBKEY','/home/wpuser/wp_rsa.pub');
>     define('FTP_PRIKEY','/home/wpuser/wp_rsa');
>     define('FTP_USER','wpuser');
>     define('FTP_PASS','');
>     define('FTP_HOST','127.0.0.1:22');
>
> Now navigating to install.php will fail step 0 at
> `wp_can_install_language_pack()`
>
> WordPress database error Table '<db-name>.wp_options' doesn't exist for
> query INSERT INTO `wp_options` (`option_name`, `option_value`,
> `autoload`) VALUES ('ftp_credentials',
> 'a:3:{s:8:\\"hostname\\";s:12:\\"127.0.0.1:22\\";s:8:\\"username\\";s:0:\\"\\";s:15:\\"connection_type\\";s:3:\\"ssh\\";}',
> 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`),
> `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
> made by wp_can_install_language_pack, WP_Upgrader->fs_connect,
> Automatic_Upgrader_Skin->request_filesystem_credentials,
> WP_Upgrader_Skin->request_filesystem_credentials,
> request_filesystem_credentials, update_option, add_option
>
> Commenting our the FS_METHOD and the FTP_* values fixes the problem. Once
> the installation is through, one can uncomment them and everything seems
> to work just fine.
>
> This doesn't seem to affect anything before 4.0 where, I believe, the
> steps in install.php were quite different, i.e. there was no
> `wp_can_install_language_pack()` obviously
>

> p.s. I hope I got all of the sftp user setup right above in step 2, but
> hopefully anyone looking into this will have the knowledge to set that up
> correctly. If not, this should help
> `https://www.digitalocean.com/community/tutorials/how-to-configure-
> secure-updates-and-installations-in-wordpress-on-ubuntu`

New description:

 Steps to reproduce:

 1.) create a new WP installation (with a brand new database) under
 /var/www/mysite
 2.) create a new user for ftp, e.g.


 {{{
     sudo adduser wpuser
     sudo chown -R wpuser:www-data /var/www/mysite
     sudo su - wpuser
     ssh-keygen -t rsa -b 4096 -C wpuser@<myhost>
     sudo chown wpuser:www-data /home/wpuser/wp_rsa*
     sudo chmod 0640 /home/wpuser/wp_rsa*
     sudo mkdir /home/wpuser/.ssh
     sudo chown wpuser:wpuser /home/wpuser/.ssh/
     sudo chmod 0700 /home/wpuser/.ssh/
     sudo cp /home/wpuser/wp_rsa.pub /home/wpuser/.ssh/authorized_keys
     sudo chown wpuser:wpuser /home/wpuser/.ssh/authorized_keys
     sudo chmod 0644 /home/wpuser/.ssh/authorized_keys
     #
     #you may need to install some packages
     #sudo apt-get update
     #sudo apt-get install -y php5-dev libssh2-1-dev libssh2-php
     #
     sudo service apache2 restart
 }}}


 3.) set the following values in wp-config.php


 {{{
     define('FS_METHOD', 'ssh2');
     define('FTP_PUBKEY','/home/wpuser/wp_rsa.pub');
     define('FTP_PRIKEY','/home/wpuser/wp_rsa');
     define('FTP_USER','wpuser');
     define('FTP_PASS','');
     define('FTP_HOST','127.0.0.1:22');
 }}}


 Now navigating to install.php will fail step 0 at
 `wp_can_install_language_pack()`


 {{{
 WordPress database error Table '<db-name>.wp_options' doesn't exist for
 query
 INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`)
 VALUES ('ftp_credentials',
 'a:3:{s:8:\\"hostname\\";s:12:\\"127.0.0.1:22\\";s:8:\\"username\\";s:0:\\"\\";s:15:\\"connection_type\\";s:3:\\"ssh\\";}',
 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`),
 `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
 made by wp_can_install_language_pack, WP_Upgrader->fs_connect,
 Automatic_Upgrader_Skin->request_filesystem_credentials,
 WP_Upgrader_Skin->request_filesystem_credentials,
 request_filesystem_credentials, update_option, add_option
 }}}


 Commenting our the FS_METHOD and the FTP_* values fixes the problem. Once
 the installation is through, one can uncomment them and everything seems
 to work just fine.

 This doesn't seem to affect anything before 4.0 where, I believe, the
 steps in install.php were quite different, i.e. there was no
 `wp_can_install_language_pack()` obviously


 p.s. I hope I got all of the sftp user setup right above in step 2, but
 hopefully anyone looking into this will have the knowledge to set that up
 correctly. If not, this should help
 `https://www.digitalocean.com/community/tutorials/how-to-configure-secure-
 updates-and-installations-in-wordpress-on-ubuntu`

--

Comment (by ocean90):

 > A PHP error is triggered, as I have all reporting off, I get 0 length
 response from the server.

 So have you tried it with reporting on too? What was the PHP error in
 detail?

--
Ticket URL: <https://core.trac.wordpress.org/ticket/29635#comment:5>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list