Файл .env отсутствует! Вы забыли загрузить файл .env в Laravel - PullRequest
0 голосов
/ 26 мая 2020

server. php

<?php
    $uri = urldecode(
        parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
    );
    if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
        return false;
    }
    require_once __DIR__.'/public/index.php';

public / index. php

<?php
    if(!file_exists('../.env')){
        $GLOBALS["error_type"] = "env-missing";
        include('error_install.php');
        exit(1);
    }

    if (version_compare(PHP_VERSION, '7.2.5') < 0){
        $GLOBALS["error_type"] = "php-version";
        include('error_install.php');
        exit(1);
    }
    changeEnvironmentVariable();

    function changeEnvironmentVariable()
    {

        $path = '../.env';
        if (file_exists($path)) {
            $current = file_get_contents($path);
            $original = [];
            if (preg_match('/^DB_PASSWORD=(.+)$/m', $current, $original)) {
                $current = preg_replace('/^DB_PASSWORD=.+$/m', 'DB_PASSWORD="' . $original[1] . '"', $current);
                if (strpos($original[1], '"') === false) {
                    file_put_contents($path, $current);
                }
            }
        }
    }

    require __DIR__.'/../vendor/autoload.php';

    $app = require_once __DIR__.'/../bootstrap/app.php';

    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

    $response = $kernel->handle(
        $request = Illuminate\Http\Request::capture()
    );

    $response->send();

    $kernel->terminate($request, $response);

Я пытаюсь развернуть свой проект laravel на сервере, но не могу запустить, когда я нажимаю, например, https://example.com, тогда он показывает структуру каталогов, которую я проверил, но не могу найти ошибку, и когда я запускаю server.php файл с доменом, он показывает .env file missing! You forgot to upload the .env file., где у меня уже есть файл .env в my root dir, и я также попытался заменить его на .evn.example, но он по-прежнему показывает структуру каталогов.

Я не понимаю, где я делаю не так? Пожалуйста, помогите мне решить эту проблему.

Спасибо

1 Ответ

0 голосов
/ 26 мая 2020

Если вы получаете список каталогов при go входе в свой домен, это означает, что ваш веб-сервер (apache или nginx) настроен неправильно. Вы должны попытаться изменить конфигурацию вашего хоста, чтобы сопоставить этот домен с правильным каталогом. Кроме того, пока вы на нем, убедитесь, что вы отключили списки каталогов в конфигурации вашего веб-сервера, так как это опасно (оно раскрывает вашу внутреннюю структуру каталогов и, возможно, конфиденциальную информацию).

Вторая проблема, которую вы описываете, вызвана используя относительные пути в вашем index. php. Когда вы подключаете этот файл по другому пути, относительные пути становятся относительными по отношению к тому, который его включает. Это считается плохой практикой и может быть легко исправлено следующим образом:

<?php
    if(!file_exists(__DIR__.'/../.env')){

Это гарантирует, что проверка файла всегда будет выполняться для текущего каталога файла, в котором мы находимся.

Надеюсь, это поможет ..

...