PHP ограничено документом root, а не файловой системой root - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь изменить текстовый файл, расположенный в каталоге / etc / nginx, через php. Я использую для этого fopen (), однако я не могу получить доступ к каталогам за пределами моих веб-сайтов root папка.

Например, мой веб-сайт хранится по абсолютному пути: / webroot / mywebsite / и если я попытаюсь прочитать что-нибудь вне этой папки, например / etc / nginx, fopen () умирает.

  • Я пробовал просто использовать ../../etc/nginx, но не нашел
  • Я пробовал запустить PHP как root
  • Я попытался добавить пользователя http в группу root
  • Я попытался установить переменную open_basedir в php .ini
  • Я попытался создать символическую ссылку на / et Папка c в папку / web root, но не может ее найти
  • Я проверил свою Nginx конфигурацию, и все php конфигурации не отменяют open_basedir
  • У меня есть подтвердил, что php .ini, который я редактирую, на самом деле изменяется в phpinfo ();
  • Я НЕ пробовал chmodding каталог root моей установки Arch. Я боюсь, что это что-то сломает

Когда я выхожу эхом realpath("index.php"), он возвращает "/webroot/mywebsite/index.php"

Вот как я подтверждаю если у меня есть доступ к моей директории root, но она не изменилась. Понятия не имею, что еще я могу попробовать. Моя старая установка Debian позволяла мне использовать абсолютный путь. Это моя новая установка Arch, и я впервые испытал это. Я подозреваю, что это может быть проблема с разрешением, но я не хочу полностью изменять свою ОС root. Есть другие предложения? Спасибо

1 Ответ

0 голосов
/ 17 июня 2020

Хорошо. Я очень удивлен, что не смог найти этот ответ буквально через 4 часа поиска в Google, но вот он. Надеюсь, я избавлю кого-то от проблемы.

Проблема была расположена здесь: /lib/systemd/system/php-fpm.service

Найдите строку «ProtectSystem = full» и установите ее на «ложь». Та-да, теперь у меня доступ везде.

...