diff --git a/lib/installer.php b/lib/installer.php
index 5e09c97329..971e2562b0 100644
--- a/lib/installer.php
+++ b/lib/installer.php
@@ -135,8 +135,14 @@ abstract class Installer
// Check the subdirs used for file uploads
$fileSubdirs = array('avatar', 'file');
foreach ($fileSubdirs as $fileSubdir) {
- $fileFullPath = INSTALLDIR."/$fileSubdir/";
- if (!is_writable($fileFullPath)) {
+ $fileFullPath = INSTALLDIR."/$fileSubdir";
+ if (!file_exists($fileFullPath)) {
+ $pass = $pass && mkdir($fileFullPath);
+ } elseif (!is_dir($fileFullPath)) {
+ $this->warning(sprintf('GNU social expected a directory but found something else on this path: %s', $fileFullPath),
+ 'Either make sure it goes to a directory or remove it and a directory will be created.');
+ $pass = false;
+ } elseif (!is_writable($fileFullPath)) {
$this->warning(sprintf('Cannot write to %s directory: %s
', $fileSubdir, $fileFullPath),
sprintf('On your server, try this command: chmod a+w %s
', $fileFullPath));
$pass = false;