Белый экран смерти Wordpress с использованием vlucas/phpdotenv, попытка загрузки переменных .env

Я настроил сайт Wordpress на EC2 (Amazon 2 Linux) с RDS, и он работает нормально. Теперь я пытаюсь загрузить переменные среды из файла .env, используя https://github.com/vlucas/phpdotenv< /а>.

  1. wp-config.php находится в /var/www (на один уровень выше корневого каталога html)
  2. Я запустил composer require vlucas/phpdotenv в /var/www/, и теперь у меня есть /var/www/vendor, файлы composer .json и .lock.

композитор.json:

{
    "require": {
        "vlucas/phpdotenv": "^4.1"
    }
}

Мой файл .env выглядит следующим образом (значения отредактированы):

DB_NAME=DBNAME
DB_USER=USERNAME
DB_PASS=PASSWORD
DB_HOST=HOSTNAME

Я добавил следующее в wp-config.php вверху, но затем я получаю ужасный белый экран смерти Wordpress.

<?php
require_once(__DIR__ . '/vendor/autoload.php');
(new \Dotenv\Dotenv(__DIR__))->load();

Я добавил свои переменные среды, как показано ниже, но даже если я вернусь к ручному вводу, с кодом выше он отображает белый экран.

/** The name of the database for WordPress */
define( 'DB_NAME', getenv('DB_NAME'));

/** MySQL database username */
define( 'DB_USER', getenv('DB_USER'));

/** MySQL database password */
define( 'DB_PASSWORD', getenv('DB_PASS'));

/** MySQL hostname */
define( 'DB_HOST', getenv('DB_HOST'));

Что я делаю не так?


person Khaleesi    schedule 10.03.2020    source источник
comment
Автозагрузка Wordpress и управление пакетами не позволят сделать это так просто. Вы можете попробовать что-то вроде github.com/johnpbloch/wordpress-core-installer, где Composer уже интегрирован и готов к использованию вместе с Wordpress Core. См. статью по адресу salferrarello.com/install-wordpress-with-composer.   -  person Daniel Protopopov    schedule 10.03.2020
comment
Хорошо, я исправил проблему с белым экраном, добавив if(file_exists(DIR . '/../vendor/autoload.php')) и заключив в него код. Теперь он не распознает настройки базы данных. Кажется, getenv('DB_NAME') не работает. Я проверил правильность файла .env.   -  person Khaleesi    schedule 10.03.2020


Ответы (1)


Мне удалось это исправить, несмотря на то, что я рвал на себе волосы в течение последних 24 часов.

if(file_exists(__DIR__ . '/vendor/autoload.php')) {
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
}
if(file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
require_once dirname(__DIR__) . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
}

После поиска я обнаружил, что использование оператора IF для проверки того, существует ли уже файл и каталог, исправило его. И мой композитор, и .env живут на один уровень выше корневого веб-сайта (/var/www/html/), поэтому мне не нужно было это менять.

Также я загрузил .env с примером кода vlucas, который есть на его странице GitHub.

person Khaleesi    schedule 10.03.2020