Let WordPress remember your FTP credentials

I’ve found it quite useful to let WordPress remember my FTP information, so that adding new plugins/themes and doing security updates can happen quite quickly.

First, gather up your FTP username, password and host.
Next, open up the ./wp-config.php file. I like to put in the FTP information after the MySQL settings area:

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');


define('FTP_HOST', 'yourFTP_Hostname');
define('FTP_USER', 'yourFTP_Username');
define('FTP_PASS', 'yourFTP_Password');
define('FTP_SSL', false);

To test it out, try to install a plugin.

In case of problems

2-3% of the time, WordPress has problems doing the FTP, even though I know that the information is correct. In that case, here is a workaround.

mysql>
mysql> select * from wp_options where option_name = 'ftp_credentials';
+-----------+-----------------+----------------------------------------------------------------------------------------------------------+----------+
| option_id | option_name     | option_value                                                                                             | autoload |
+-----------+-----------------+----------------------------------------------------------------------------------------------------------+----------+
|       876 | ftp_credentials | a:3:{s:8:"hostname";s:12:"example.com";s:8:"username";s:8:"someUsername";s:15:"connection_type";s:3:"ftp";} | yes      |
+-----------+-----------------+----------------------------------------------------------------------------------------------------------+----------+
1 row in set (0.00 sec)

Take a look at what’s there, copy and paste it to a temporary safe place, then delete it from inside of MySQL:

mysql> delete from wp_options  where option_name = 'ftp_credentials';
Query OK, 1 row affected (0.00 sec)

mysql>

Switch back to your browser, and try installing the plug-in again. This time it should work.

Stash your mysql password in the .my.cnf file

Hopefully you are using usernames and passwords when accessing your MySQL databases. Security can make it hard to quickly jump in and start working in the MySQL shell if your password is quite complicated.

Here’s the solution:

create a ~/.my.cnf file and fill it with:

[client]
database=yourDBname
user=yourDBusername
password=yourSuperSecretPassword

Next, make sure that only you can read it:

chmod 600 ~/.my.cnf

Lastly, test it out:


user@host:~$ mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 65863
Server version: 5.5.31-0ubuntu0.12.04.2 (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables;
+-----------------------+
| Tables_in_yourDBname  |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
11 rows in set (0.00 sec)

mysql>

Voila! In there without having to worry about needing to look up your password.

Git – automagically add modified files and rm deleted files

Sometimes a script will upgrade/add/modify/delete a large swath of files (possibly due to an upgrade-type script). If you are lazy, then you’ll want a script to help you commit those files. Here’s what I’ve come up with:

To perform a git add to all modified files:

 for file in `git status | grep modified | cut -d ":" -f 2`; do git add $file; done

To perform a git rm to all modified files:

 for file in `git status | grep deleted | cut -d ":" -f 2`; do git rm $file; done