diff --git a/.gitignore b/.gitignore index 8cf78452c..be8430509 100755 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,6 @@ coverage .buildpath .project .settings/ -local/cache/* local/media/documents/* local/media/images/* web/assets/* diff --git a/.travis.yml b/.travis.yml index 84e25866b..184a98fbe 100755 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ env: - DB_USER=root before_script: + - phpenv config-add travis.php.ini - composer self-update - composer install --prefer-dist --dev - sh -c "mysql -u$DB_USER -e 'SET FOREIGN_KEY_CHECKS = 0; DROP DATABASE IF EXISTS thelia;SET FOREIGN_KEY_CHECKS = 1;'; fi" diff --git a/core/lib/Thelia/Command/Install.php b/core/lib/Thelia/Command/Install.php index 03b7fda48..6423d861a 100755 --- a/core/lib/Thelia/Command/Install.php +++ b/core/lib/Thelia/Command/Install.php @@ -28,6 +28,7 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Filesystem\Filesystem; use Thelia\Command\ContainerAwareCommand; +use Thelia\Install\CheckPermission; use Thelia\Install\Database; /** @@ -82,6 +83,9 @@ class Install extends ContainerAwareCommand '', 'Welcome to Thelia install process', 'You need information about your database configuration (host, username, password, database name, etc)', + '', + 'Caution : You are installing Thelia in cli mode, we verify some information, but this information are only available for the cli php sapi', + 'This informations can be different in your apache or cgi php.ini files', '' )); @@ -136,40 +140,35 @@ class Install extends ContainerAwareCommand "Checking some permissions" )); - $confDir = THELIA_ROOT . "local/config"; - $cacheDir = THELIA_ROOT . "cache"; - $logDir = THELIA_ROOT . "log"; + $permissions = new CheckPermission(false, $this->getContainer()->get('thelia.translator')); + $isValid = $permissions->exec(); - $conf = is_writable($confDir); - $cache = is_writable($cacheDir); - $log = is_writable($logDir); + foreach($permissions->getValidationMessages() as $item => $data) { + if($data['status']) { + $output->writeln(array( + sprintf("%s ... %s", + $data['text'], + "Ok") + ) + ); + } else { + $output->writeln(array( + sprintf("%s %s", + $data['text'], + sprintf("%s", $data["hint"]) + ) + )); + } - $output->writeln(array( - sprintf( - "config directory(%s)... %s", - $confDir, - $conf ? "Ok" : "Fail" - ), - sprintf( - "cache directory(%s)... %s" - ,$cacheDir, - $cache ? "Ok" : "Fail" - ), - sprintf( - "log directory(%s)... %s", - $logDir, - $log ? "Ok" : "Fail" - ), - )); - - if ($conf === false || $cache === false || $log === false) { - $output->writeln(array( - "", - "Please put correct permission and reload install process" - )); - exit; } + if(false === $isValid) { + $output->writeln(array( + "", + "Please put correct permissions and reload install process" + )); + exit; + } } /** diff --git a/core/lib/Thelia/Install/CheckPermission.php b/core/lib/Thelia/Install/CheckPermission.php index 15317211b..b8c4e9888 100644 --- a/core/lib/Thelia/Install/CheckPermission.php +++ b/core/lib/Thelia/Install/CheckPermission.php @@ -45,6 +45,7 @@ class CheckPermission extends BaseInstall const DIR_LOG = 'log'; const DIR_CACHE = 'cache'; const DIR_WEB = 'web'; + const DIR_SESSION = 'local/session'; /** @var array Directory needed to be writable */ protected $directoriesToBeWritable = array( @@ -52,11 +53,12 @@ class CheckPermission extends BaseInstall self::DIR_LOG, self::DIR_CACHE, self::DIR_WEB, + self::DIR_SESSION, ); /** @var array Minimum server configuration necessary */ protected $minServerConfigurationNecessary = array( - 'memory_limit' => 134217728, + 'memory_limit' => 157286400, 'post_max_size' => 20971520, 'upload_max_filesize' => 2097152 ); @@ -187,9 +189,9 @@ class CheckPermission extends BaseInstall { if ($this->translator !== null) { if ($isValid) { - $sentence = 'Your directory %directory% is writable'; + $sentence = 'Your directory %directory% is writable'; } else { - $sentence = 'Your directory %directory% is not writable'; + $sentence = 'Your directory %directory% is not writable'; } $translatedText = $this->translator->trans( @@ -216,7 +218,7 @@ class CheckPermission extends BaseInstall protected function getI18nDirectoryHint($directory) { if ($this->translator !== null) { - $sentence = 'chmod 777 %directory% on your server with admin rights could help'; + $sentence = 'chmod 777 %directory% on your server with admin rights could help'; $translatedText = $this->translator->trans( $sentence, array( @@ -246,9 +248,9 @@ class CheckPermission extends BaseInstall protected function getI18nConfigText($key, $expectedValue, $currentValue, $isValid) { if ($isValid) { - $sentence = 'Your %key% server configuration (currently %currentValue%) is well enough to run Thelia2 (%expectedValue% needed)'; + $sentence = 'Your %key% server configuration (currently %currentValue%) is well enough to run Thelia2 (%expectedValue% needed)'; } else { - $sentence = 'Your %key% server configuration (currently %currentValue%) is not sufficient enough in order to run Thelia2 (%expectedValue% needed)'; + $sentence = 'Your %key% server configuration (currently %currentValue%) is not sufficient enough in order to run Thelia2 (%expectedValue% needed)'; } $translatedText = $this->translator->trans( @@ -271,7 +273,7 @@ class CheckPermission extends BaseInstall */ protected function getI18nConfigHint() { - $sentence = 'Modifying this value on your server php.ini file with admin rights could help'; + $sentence = 'Modifying this value on your server php.ini file with admin rights could help'; $translatedText = $this->translator->trans( $sentence, array(), @@ -294,9 +296,9 @@ class CheckPermission extends BaseInstall { if ($this->translator !== null) { if ($isValid) { - $sentence = 'Your PHP version %currentValue% is well enough to run Thelia2 (%expectedValue% needed)'; + $sentence = 'Your PHP version %currentValue% is well enough to run Thelia2 (%expectedValue% needed)'; } else { - $sentence = 'Your PHP version %currentValue% is not sufficient enough to run Thelia2 (%expectedValue% needed)'; + $sentence = 'Your PHP version %currentValue% is not sufficient enough to run Thelia2 (%expectedValue% needed)'; } $translatedText = $this->translator->trans( @@ -343,6 +345,10 @@ class CheckPermission extends BaseInstall { $serverValueInBytes = $this->returnBytes(ini_get($key)); + if($serverValueInBytes == -1) { + return true; + } + return ($serverValueInBytes >= $necessaryValueInBytes); } diff --git a/travis.php.ini b/travis.php.ini new file mode 100644 index 000000000..86776429c --- /dev/null +++ b/travis.php.ini @@ -0,0 +1 @@ +post_max_size = 20M \ No newline at end of file diff --git a/local/cache/.gitkeep b/web/cache/.gitkeep old mode 100755 new mode 100644 similarity index 100% rename from local/cache/.gitkeep rename to web/cache/.gitkeep diff --git a/web/index_dev.php b/web/index_dev.php index 0e9a229a8..f653270d6 100755 --- a/web/index_dev.php +++ b/web/index_dev.php @@ -42,11 +42,11 @@ $request = Request::createFromGlobals(); $thelia = new Thelia("dev", true); if ( false === in_array($request->getClientIp(), $trustedIp)) { - // Redirect 401 Unauthorized - $response = new Response('Unauthorized', 401); + $response = Response::create('Forbidden', 403)->send(); + $thelia->terminate($request, $response); +} else { + $response = $thelia->handle($request)->prepare($request)->send(); $thelia->terminate($request, $response); } -$response = $thelia->handle($request)->prepare($request)->send(); -$thelia->terminate($request, $response); \ No newline at end of file