| @@ -0,0 +1,6 @@ | |||||
| version: '3' | |||||
| services: | |||||
| php: | |||||
| image: arbitry:local | |||||
| volumes: | |||||
| - ./project:/srv/project | |||||
| @@ -0,0 +1,6 @@ | |||||
| version: '3' | |||||
| services: | |||||
| php: | |||||
| environment: | |||||
| TZ: UTC | |||||
| TERM: xterm | |||||
| @@ -11,4 +11,6 @@ curl | |||||
| RUN docker-php-ext-install bcmath | RUN docker-php-ext-install bcmath | ||||
| COPY --from=composer /usr/bin/composer /usr/bin/composer | |||||
| COPY ./project /projects/main | COPY ./project /projects/main | ||||
| @@ -0,0 +1,21 @@ | |||||
| # In all environments, the following files are loaded if they exist, | |||||
| # the latter taking precedence over the former: | |||||
| # | |||||
| # * .env contains default values for the environment variables needed by the app | |||||
| # * .env.local uncommitted file with local overrides | |||||
| # * .env.$APP_ENV committed environment-specific defaults | |||||
| # * .env.$APP_ENV.local uncommitted environment-specific overrides | |||||
| # | |||||
| # Real environment variables win over .env files. | |||||
| # | |||||
| # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. | |||||
| # | |||||
| # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). | |||||
| # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration | |||||
| ###> symfony/framework-bundle ### | |||||
| APP_ENV=dev | |||||
| APP_SECRET=2cb22b0116249ce29b70a2b0ab83a8e5 | |||||
| #TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 | |||||
| #TRUSTED_HOSTS='^(localhost|example\.com)$' | |||||
| ###< symfony/framework-bundle ### | |||||
| @@ -0,0 +1,10 @@ | |||||
| ###> symfony/framework-bundle ### | |||||
| /.env.local | |||||
| /.env.local.php | |||||
| /.env.*.local | |||||
| /config/secrets/prod/prod.decrypt.private.php | |||||
| /public/bundles/ | |||||
| /var/ | |||||
| /vendor/ | |||||
| ###< symfony/framework-bundle ### | |||||
| @@ -0,0 +1,42 @@ | |||||
| #!/usr/bin/env php | |||||
| <?php | |||||
| use App\Kernel; | |||||
| use Symfony\Bundle\FrameworkBundle\Console\Application; | |||||
| use Symfony\Component\Console\Input\ArgvInput; | |||||
| use Symfony\Component\ErrorHandler\Debug; | |||||
| if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) { | |||||
| echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL; | |||||
| } | |||||
| set_time_limit(0); | |||||
| require dirname(__DIR__).'/vendor/autoload.php'; | |||||
| if (!class_exists(Application::class)) { | |||||
| throw new LogicException('You need to add "symfony/framework-bundle" as a Composer dependency.'); | |||||
| } | |||||
| $input = new ArgvInput(); | |||||
| if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) { | |||||
| putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); | |||||
| } | |||||
| if ($input->hasParameterOption('--no-debug', true)) { | |||||
| putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); | |||||
| } | |||||
| require dirname(__DIR__).'/config/bootstrap.php'; | |||||
| if ($_SERVER['APP_DEBUG']) { | |||||
| umask(0000); | |||||
| if (class_exists(Debug::class)) { | |||||
| Debug::enable(); | |||||
| } | |||||
| } | |||||
| $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); | |||||
| $application = new Application($kernel); | |||||
| $application->run($input); | |||||
| @@ -0,0 +1,62 @@ | |||||
| { | |||||
| "type": "project", | |||||
| "license": "proprietary", | |||||
| "require": { | |||||
| "php": "^7.2.5", | |||||
| "ext-ctype": "*", | |||||
| "ext-iconv": "*", | |||||
| "symfony/console": "5.0.*", | |||||
| "symfony/dotenv": "5.0.*", | |||||
| "symfony/flex": "^1.3.1", | |||||
| "symfony/framework-bundle": "5.0.*", | |||||
| "symfony/yaml": "5.0.*" | |||||
| }, | |||||
| "require-dev": { | |||||
| }, | |||||
| "config": { | |||||
| "preferred-install": { | |||||
| "*": "dist" | |||||
| }, | |||||
| "sort-packages": true | |||||
| }, | |||||
| "autoload": { | |||||
| "psr-4": { | |||||
| "App\\": "src/" | |||||
| } | |||||
| }, | |||||
| "autoload-dev": { | |||||
| "psr-4": { | |||||
| "App\\Tests\\": "tests/" | |||||
| } | |||||
| }, | |||||
| "replace": { | |||||
| "paragonie/random_compat": "2.*", | |||||
| "symfony/polyfill-ctype": "*", | |||||
| "symfony/polyfill-iconv": "*", | |||||
| "symfony/polyfill-php72": "*", | |||||
| "symfony/polyfill-php71": "*", | |||||
| "symfony/polyfill-php70": "*", | |||||
| "symfony/polyfill-php56": "*" | |||||
| }, | |||||
| "scripts": { | |||||
| "auto-scripts": { | |||||
| "cache:clear": "symfony-cmd", | |||||
| "assets:install %PUBLIC_DIR%": "symfony-cmd" | |||||
| }, | |||||
| "post-install-cmd": [ | |||||
| "@auto-scripts" | |||||
| ], | |||||
| "post-update-cmd": [ | |||||
| "@auto-scripts" | |||||
| ] | |||||
| }, | |||||
| "conflict": { | |||||
| "symfony/symfony": "*" | |||||
| }, | |||||
| "extra": { | |||||
| "symfony": { | |||||
| "allow-contrib": false, | |||||
| "require": "5.0.*" | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,23 @@ | |||||
| <?php | |||||
| use Symfony\Component\Dotenv\Dotenv; | |||||
| require dirname(__DIR__).'/vendor/autoload.php'; | |||||
| // Load cached env vars if the .env.local.php file exists | |||||
| // Run "composer dump-env prod" to create it (requires symfony/flex >=1.2) | |||||
| if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { | |||||
| foreach ($env as $k => $v) { | |||||
| $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && 0 !== strpos($k, 'HTTP_') ? $_SERVER[$k] : $v); | |||||
| } | |||||
| } elseif (!class_exists(Dotenv::class)) { | |||||
| throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); | |||||
| } else { | |||||
| // load all the .env files | |||||
| (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); | |||||
| } | |||||
| $_SERVER += $_ENV; | |||||
| $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; | |||||
| $_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; | |||||
| $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; | |||||
| @@ -0,0 +1,5 @@ | |||||
| <?php | |||||
| return [ | |||||
| Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], | |||||
| ]; | |||||
| @@ -0,0 +1,19 @@ | |||||
| framework: | |||||
| cache: | |||||
| # Unique name of your app: used to compute stable namespaces for cache keys. | |||||
| #prefix_seed: your_vendor_name/app_name | |||||
| # The "app" cache stores to the filesystem by default. | |||||
| # The data in this cache should persist between deploys. | |||||
| # Other options include: | |||||
| # Redis | |||||
| #app: cache.adapter.redis | |||||
| #default_redis_provider: redis://localhost | |||||
| # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) | |||||
| #app: cache.adapter.apcu | |||||
| # Namespaced pools use the above "app" backend by default | |||||
| #pools: | |||||
| #my.dedicated.cache: null | |||||
| @@ -0,0 +1,16 @@ | |||||
| framework: | |||||
| secret: '%env(APP_SECRET)%' | |||||
| #csrf_protection: true | |||||
| #http_method_override: true | |||||
| # Enables session support. Note that the session will ONLY be started if you read or write from it. | |||||
| # Remove or comment this section to explicitly disable session support. | |||||
| session: | |||||
| handler_id: null | |||||
| cookie_secure: auto | |||||
| cookie_samesite: lax | |||||
| #esi: true | |||||
| #fragments: true | |||||
| php_errors: | |||||
| log: true | |||||
| @@ -0,0 +1,3 @@ | |||||
| framework: | |||||
| router: | |||||
| strict_requirements: null | |||||
| @@ -0,0 +1,3 @@ | |||||
| framework: | |||||
| router: | |||||
| utf8: true | |||||
| @@ -0,0 +1,4 @@ | |||||
| framework: | |||||
| test: true | |||||
| session: | |||||
| storage_id: session.storage.mock_file | |||||
| @@ -0,0 +1,3 @@ | |||||
| #index: | |||||
| # path: / | |||||
| # controller: App\Controller\DefaultController::index | |||||
| @@ -0,0 +1,3 @@ | |||||
| _errors: | |||||
| resource: '@FrameworkBundle/Resources/config/routing/errors.xml' | |||||
| prefix: /_error | |||||
| @@ -0,0 +1,27 @@ | |||||
| # This file is the entry point to configure your own services. | |||||
| # Files in the packages/ subdirectory configure your dependencies. | |||||
| # Put parameters here that don't need to change on each machine where the app is deployed | |||||
| # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration | |||||
| parameters: | |||||
| services: | |||||
| # default configuration for services in *this* file | |||||
| _defaults: | |||||
| autowire: true # Automatically injects dependencies in your services. | |||||
| autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. | |||||
| # makes classes in src/ available to be used as services | |||||
| # this creates a service per class whose id is the fully-qualified class name | |||||
| App\: | |||||
| resource: '../src/*' | |||||
| exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}' | |||||
| # controllers are imported separately to make sure services can be injected | |||||
| # as action arguments even if you don't extend any base controller class | |||||
| App\Controller\: | |||||
| resource: '../src/Controller' | |||||
| tags: ['controller.service_arguments'] | |||||
| # add more service definitions when explicit configuration is needed | |||||
| # please note that last definitions always *replace* previous ones | |||||
| @@ -0,0 +1,27 @@ | |||||
| <?php | |||||
| use App\Kernel; | |||||
| use Symfony\Component\ErrorHandler\Debug; | |||||
| use Symfony\Component\HttpFoundation\Request; | |||||
| require dirname(__DIR__).'/config/bootstrap.php'; | |||||
| if ($_SERVER['APP_DEBUG']) { | |||||
| umask(0000); | |||||
| Debug::enable(); | |||||
| } | |||||
| if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) { | |||||
| Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); | |||||
| } | |||||
| if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) { | |||||
| Request::setTrustedHosts([$trustedHosts]); | |||||
| } | |||||
| $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); | |||||
| $request = Request::createFromGlobals(); | |||||
| $response = $kernel->handle($request); | |||||
| $response->send(); | |||||
| $kernel->terminate($request, $response); | |||||
| @@ -0,0 +1,54 @@ | |||||
| <?php | |||||
| namespace App; | |||||
| use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; | |||||
| use Symfony\Component\Config\Loader\LoaderInterface; | |||||
| use Symfony\Component\Config\Resource\FileResource; | |||||
| use Symfony\Component\DependencyInjection\ContainerBuilder; | |||||
| use Symfony\Component\HttpKernel\Kernel as BaseKernel; | |||||
| use Symfony\Component\Routing\RouteCollectionBuilder; | |||||
| class Kernel extends BaseKernel | |||||
| { | |||||
| use MicroKernelTrait; | |||||
| private const CONFIG_EXTS = '.{php,xml,yaml,yml}'; | |||||
| public function registerBundles(): iterable | |||||
| { | |||||
| $contents = require $this->getProjectDir().'/config/bundles.php'; | |||||
| foreach ($contents as $class => $envs) { | |||||
| if ($envs[$this->environment] ?? $envs['all'] ?? false) { | |||||
| yield new $class(); | |||||
| } | |||||
| } | |||||
| } | |||||
| public function getProjectDir(): string | |||||
| { | |||||
| return \dirname(__DIR__); | |||||
| } | |||||
| protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void | |||||
| { | |||||
| $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); | |||||
| $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); | |||||
| $container->setParameter('container.dumper.inline_factories', true); | |||||
| $confDir = $this->getProjectDir().'/config'; | |||||
| $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); | |||||
| $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); | |||||
| $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); | |||||
| $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); | |||||
| } | |||||
| protected function configureRoutes(RouteCollectionBuilder $routes): void | |||||
| { | |||||
| $confDir = $this->getProjectDir().'/config'; | |||||
| $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); | |||||
| $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); | |||||
| $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,136 @@ | |||||
| { | |||||
| "php": { | |||||
| "version": "7.4" | |||||
| }, | |||||
| "psr/cache": { | |||||
| "version": "1.0.1" | |||||
| }, | |||||
| "psr/container": { | |||||
| "version": "1.0.0" | |||||
| }, | |||||
| "psr/event-dispatcher": { | |||||
| "version": "1.0.0" | |||||
| }, | |||||
| "psr/log": { | |||||
| "version": "1.1.3" | |||||
| }, | |||||
| "symfony/cache": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/cache-contracts": { | |||||
| "version": "v2.0.1" | |||||
| }, | |||||
| "symfony/config": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/console": { | |||||
| "version": "4.4", | |||||
| "recipe": { | |||||
| "repo": "github.com/symfony/recipes", | |||||
| "branch": "master", | |||||
| "version": "4.4", | |||||
| "ref": "ea8c0eda34fda57e7d5cd8cbd889e2a387e3472c" | |||||
| }, | |||||
| "files": [ | |||||
| "bin/console", | |||||
| "config/bootstrap.php" | |||||
| ] | |||||
| }, | |||||
| "symfony/dependency-injection": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/dotenv": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/error-handler": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/event-dispatcher": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/event-dispatcher-contracts": { | |||||
| "version": "v2.0.1" | |||||
| }, | |||||
| "symfony/filesystem": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/finder": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/flex": { | |||||
| "version": "1.0", | |||||
| "recipe": { | |||||
| "repo": "github.com/symfony/recipes", | |||||
| "branch": "master", | |||||
| "version": "1.0", | |||||
| "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" | |||||
| }, | |||||
| "files": [ | |||||
| ".env" | |||||
| ] | |||||
| }, | |||||
| "symfony/framework-bundle": { | |||||
| "version": "4.4", | |||||
| "recipe": { | |||||
| "repo": "github.com/symfony/recipes", | |||||
| "branch": "master", | |||||
| "version": "4.4", | |||||
| "ref": "23ecaccc551fe2f74baf613811ae529eb07762fa" | |||||
| }, | |||||
| "files": [ | |||||
| "config/bootstrap.php", | |||||
| "config/packages/cache.yaml", | |||||
| "config/packages/framework.yaml", | |||||
| "config/packages/test/framework.yaml", | |||||
| "config/routes/dev/framework.yaml", | |||||
| "config/services.yaml", | |||||
| "public/index.php", | |||||
| "src/Controller/.gitignore", | |||||
| "src/Kernel.php" | |||||
| ] | |||||
| }, | |||||
| "symfony/http-foundation": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/http-kernel": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/mime": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/polyfill-intl-idn": { | |||||
| "version": "v1.15.0" | |||||
| }, | |||||
| "symfony/polyfill-mbstring": { | |||||
| "version": "v1.15.0" | |||||
| }, | |||||
| "symfony/polyfill-php73": { | |||||
| "version": "v1.15.0" | |||||
| }, | |||||
| "symfony/routing": { | |||||
| "version": "4.2", | |||||
| "recipe": { | |||||
| "repo": "github.com/symfony/recipes", | |||||
| "branch": "master", | |||||
| "version": "4.2", | |||||
| "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" | |||||
| }, | |||||
| "files": [ | |||||
| "config/packages/prod/routing.yaml", | |||||
| "config/packages/routing.yaml", | |||||
| "config/routes.yaml" | |||||
| ] | |||||
| }, | |||||
| "symfony/service-contracts": { | |||||
| "version": "v2.0.1" | |||||
| }, | |||||
| "symfony/var-dumper": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/var-exporter": { | |||||
| "version": "v5.0.7" | |||||
| }, | |||||
| "symfony/yaml": { | |||||
| "version": "v5.0.7" | |||||
| } | |||||
| } | |||||
| @@ -1,6 +0,0 @@ | |||||
| <?php | |||||
| declare(strict_types=1); | |||||
| echo "Hello jhgjkl;fghj;"; | |||||
| phpinfo(); | |||||