Каталог статей
Коли я, як завжди, відкрив адміністративну панель WordPress , я був готовий перевірити журнали резервного копіювання.
Потім я побачив купу жовтих.
Попередження, попередження і ще раз попередження.
警告: is_readable(): open_basedir restriction in effect. File(/home/admin/.aws/config) is not within the allowed path(s): (...)
Резервне копіювання завершилося без перерви, але рядок стану був повністю жовтим, що було дуже неприємно дивитися на нього.
Знаєте це відчуття? Це ніби ви надсилаєте заявку на перевірку, всі CI зелені, але є попередження про ворсинки. Ви знаєте, що це не вплине на роботу, але все одно відчуваєте дискомфорт.
Я на мить задумався.
Чи можна повністю вирішити цю проблему?

Справжня причина попередження BackWPup: AWS SDK спрацював з обмеженням open_basedir.
Чесно кажучи, спочатку я подумав, що це проблема з плагіном резервного копіювання BackWPup, оскільки попередження з'являлося в його журналах.
Але при детальнішому розгляді щось було не так.
У попередженні згадувався шлях./home/admin/.aws/configЦе AWS SDK, який автоматично шукає каталог конфігурації AWS поточного користувача за замовчуванням під час ініціалізації.
Звучить трохи заплутано, чи не так?
По суті, це означає, що якщо ви встановите плагін, пов’язаний з AWS, у WordPress, такий як сховище S3 або CloudFront, усі ці плагіни використовуватимуть AWS SDK у своїй основі. Коли AWS SDK запускається, він автоматично перевірить ваш домашній каталог на наявність інструментів для встановлення AWS SDK..awsЦя папка містить файли конфігурації та облікові дані.
Однак, з міркувань безпеки, PHP-сервер відкрив...open_basedirЦе фактично те саме, що позначити територію на сервері та сказати PHP, що ви можете переміщатися лише в межах цієї території, а не блукати навколо.
/tmpКаталог є в білому списку, каталог веб-сайту є в білому списку, але вашого каталогу, вибачте, немає.
Коли AWS SDK намагається отримати доступ до вашого каталогу, він блокується.
Потім з'явилося попередження.
Правильний підхід до вирішення попереджень open_basedir: перенаправлення шляху конфігурації AWS.
Чесно кажучи, моєю першою реакцією було змінити це.open_basedirНалаштувати, поставити/home/adminДодайте це.
Але потім я знову подумав про це і зрозумів, що це неправильно.
Ви зробили помилку. Неправильне форматування. Ви пропустили скісну риску та додали зайвий пробіл. Це призвело до помилки 500, і весь сайт зник.
іopen_basedirЙого було відкрито з міркувань безпеки. Якщо ви його відкриєте, ви фактично дасте серверу лазівку, а це того не варте.
Чи є безпечніший спосіб?
Я на мить подумав про це, оскільки вам потрібно знайти AWS SDK.../home/admin/.aws/configЧи можу я обдурити його, щоб він шукав цей файл деінде?
Перейдіть до одного з місць, яке вже є в білому списку.
Виправлення попереджень WordPress BackWPup: додавання двох рядків коду до wp-config.php
Рішення насправді сміховинно просте.
У WordPresswp-config.phpПросто додайте два рядки коду до файлу.
// 解决 AWS open_basedir 警告的环境变量设置
putenv('AWS_CONFIG_FILE=' . __DIR__ . '/wp-content/uploads/.aws_config');
putenv('AWS_SHARED_CREDENTIALS_FILE=' . __DIR__ . '/wp-content/uploads/.aws_credentials');
putenv('AWS_EC2_METADATA_DISABLED=true');
/* That's all, stop editing! Happy publishing. */Додати до/* That's all, stop editing! Happy publishing. */Просто підніміться вище цієї лінії.
Тільки ці три рядки.
没了。
Перевірка ефекту відновлення: журнали резервного копіювання BackWPup повернулися до нормального стану.
Після внесення змін поверніться до бекенду WordPress, відкрийте BackWPup і натисніть «Запустити зараз».
Перевірте журнали після завершення запуску.
Яскраво-жовті попередження зникли, їх замінили зелені повідомлення «успішно завершено».
Це так гладко.
Два рядки коду, нульовий ризик, менше 10 секунд на модифікацію, і проблема була повністю вирішена.
Такі «не фатальні, але дратівливі» проблеми насправді займають найбільше часу. Тому що ви не знаєте, чи раптом ситуація погіршиться після оновлення, і ви не знаєте, чи вплине це на інші плагіни.
Якщо щось можна повністю виключити двома рядками коду, то не залишайте це на шляху.
Гаразд, це все для цієї статті.
Оскільки це питання нескладне, мені не потрібно надавати вам жодних попередніх знань, галузевий аналіз чи майбутні тенденції.
Це просто невелике попередження в адміністративній панелі WordPress та виправлення за допомогою двох рядків коду.
Сподіваюся, що наступного разу, коли ви побачите це жовте попередження, ви згадаєте цю статтю.
Сподіваємося, що стаття «Як вирішити проблему плагіна WordPress BackWPup is_readable(): діє обмеження open_basedir. Попередження про шлях AWS?», опублікована в блозі Ченя Вейляна ( https://www.chenweiliang.com/ ), буде вам корисною.
Не соромтеся поділитися посиланням на цю статтю: https://www.chenweiliang.com/cwl-34455.html
