I am running Drupal 7.22 on Nginx using php-fpm. I am running drupal at a domain "datalore" under "datalore/drupal". A user called "drupal" owns the drupal files and php-fpm under this url is run under this user. This user also owns the database "drupal-db".

Having set up the database and copied the default settings, I editted the settings.php to set the database to "drupal-db" and the base_url to "http://datalore/drupal"

if I navigate to datalore/drupal/index.php I get:

DOException: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "semaphore" does not exist LINE 1: SELECT expire, value FROM semaphore WHERE name = 'variable_i... ^: SELECT expire, value FROM {semaphore} WHERE name = :name; Array ( [:name] => variable_init ) in lock_may_be_available() (line 167 of /home/drupal/drupal/includes/lock.inc).

If I navigate to datalore/drupal/install.php then I can get as far as language selection (only english is available) because the HTML form has the following code:

<form action="/install.php" method="post" id="install-select-locale-form" accept-charset="UTF-8"><div><div class="form-item form-type-radio form-item-locale">
<input type="radio" id="edit-locale--2" name="locale" value="en" checked="checked" class="form-radio" />  <label class="option" for="edit-locale--2">English (built-in) </label>

i.e. it does NOT use the base_url and tries to reference "/install.php" at the root url.

If I install Drupal as the root url (i.e. http://datalore/install.php) then the install script just loops back to profile selection when I click "save and continue"