WordPress Automatic Install and Upgrade Errors

and like us on FB

The problem and solution described came about after a friend had issues with her WP installation. To cut a long story short, I had to hard-code FTP details into the wp-config.php file using WordPress Upgrade Constants .

define('FTP_USER', 'username');
define('FTP_PASS', 'password');
define('FTP_HOST', 'ftp.example.org');
define('FTP_BASE', '/path/to/wordpress/');
define('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/');

The second issue that troubled me were the following errors:

Unable to Locate WordPress Plugin Directory

Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/www/wp-admin/includes/class-wp-upgrader.php on line 189

WordPress Automatic Install and Upgrade Errors

The Problem Code

I search the WordPress Codex for a solution and found this snippet (you should copy to your wp-config.php file (although it’s code we won’t use: see below).

This will tell WordPress to use the “direct write” method; with create_function as a quick hack. You would then tell WordPress (via defined constants) what permissions to apply to the files and folders it creates.

define( 'FS_CHMOD_DIR', 0777 );
define( 'FS_CHMOD_FILE', 0777 );

However, a quick search of the WordPress Codex found constants that negate the need for any of the above. So, open up config.php and copy the following somewhere near the top of the file.

define( 'FS_METHOD', 'direct' );
define( 'FS_CHMOD_DIR', 0777 );
define( 'FS_CHMOD_FILE', 0777 );

Defining FS_METHOD as”direct” forces WordPress to use Direct File I/O requests from within PHP. The manual sensibly states that this is fraught with opening up security issues on poorly configured hosts. Use with caution.

Common Errors

  • Remember, your wp-content folder should be given appropriate permissions.
  • If the system fails to create an ‘upgrade‘ directory in wp-content, create it manually (as you would with your uploads directory).