During upload of plugin files, WordPress is coded to first check if it can write to wp-admin and wp-content. If this check fails WordPress will fail and provide the unhelpful message that it requires ftp credentials.
This kind of check is a good, but the current (as of May 16, 2013) code to perform this check is not well written.
The "check" looks at the process id running WordPress (in our case www-data) and determines if it is equal to the directory owner id. Anything else, such as having the owner id be serveradmin and granting group www-data write access will not work.
In the BonsaiFramework WordPress Simplified process we compromise and set the user id specifically for wp-content and wp-admin. However, some administrators will want to be more consistent granting serveradmin as the user id and www-data as the group id with group set to also have write access as shown below,
drwxrwx--- 9 serveradmin www-data 4096 May 16 16:07 wp-admin drwxrwx--- 6 serveradmin www-data 4096 May 16 22:01 wp-content
Go to your shell, load your favourite editor and paste the contents of the wp-config.php file,
vi /opt/web/php/dailyplanet.com/blog/wp-config.php
Also while you are there add the following to the bottom of the file,
# WordPress determines write access by checking if the Web Server ID and the directory ID being written too matches. # During manual file upload the failure results in a prompt for FTP login information. # The failure will occur regardless if permissions are granted using other means such as group access or ACLs access. # This line overrides the write check by forcing a direct write. define('FS_METHOD', 'direct');