Мне интересно, почему это возвращает пустую строку:
$settings = file_get_contents('/home/ec2-user/settings.json');
но это работает:
$settings = file_get_contents('/var/www/settings.json');
Кажется, я не могу получить доступ к своему файлу json из домашнего каталога.
Любая идея?
Apache работает под www
пользователь, чья домашняя папка имеет значение /var/www
, А поскольку PHP-скрипты запускаются в контексте Apache, они также наследуют его пользователя. Таким образом, ваш скрипт не может получить доступ к файлам из домашней папки других пользователей.
Если вы запустите соответствующий код через CLI (вы вошли через ssh
), вы сможете получить доступ к содержимому /home/ec2-user/settings.json
как скрипт будет работать в контексте вашего пользователя.
Обычно веб-сервер работает как собственный пользователь. Этот пользователь не имеет домашнего каталога (в / home) и не имеет доступа к домашнему каталогу других пользователей.
Если display_errors
включен, вы должны увидеть предупреждение с помощью file_get_contents
чтобы получить доступ к файлу, к которому у вас нет прав доступа.