apache — PHP фатальная ошибка: неизвестно: не удалось открыть файл ‘/home/user/pathto/header.php’ после добавления его как auto_prepend_file

Моя цель — настроить профилирование php для локального сайта разработки в Kubuntu 16.04.

Установлены tideways согласно документам и проверил, правильно ли он установлен с:

php --ri tideways_xhprof

созданный header.php со следующим содержанием

<?php

tideways_xhprof_enable();

Добавлена ​​ссылка на него php.ini

auto_prepend_file = "/home/user/pathto/header.php"

Restarted apache2

И получение следующих ошибок в журнале ошибок Apache:

[Сб 27 января 17: 54: 24.233604 2018] [: ошибка] [pid 15976] [клиент
127.0.0.1:42054] Предупреждение PHP: Неизвестно: не удалось открыть поток: В строке 0 неизвестно разрешение в неизвестном [суббота 27 января 17: 54: 24.233653
2018] [: error] [pid 15976] [client 127.0.0.1:42054] Неустранимая ошибка PHP:
Неизвестно: не удалось открыть файл ‘/home/user/pathto/header.php’
(include_path = ‘.: / usr / share / php’) в поле Неизвестно в строке 0

Попробовал добавить директиву

php_value auto_prepend_file /home/user/pathto/header.php

в каталог блок сайта в apache2.conf, но та же ошибка выскакивает.

В чем дело? Какие разрешения неверны?
С уважением.

0

Решение

Linux использует модель разрешений, которая включает пользователей, которые могут принадлежать к группам, и файлы и каталоги, которые могут быть назначены этим пользователям и группам. По умолчанию, когда вы устанавливаете Apache и PHP в Ubuntu, у вас появляется новый пользователь Apache с именем «www-data». Каждый раз, когда Apache запускается и ему необходим доступ к файловой системе, он не отличается от любого другого пользователя, а операционной системе требуются те же разрешения, что и любому другому пользователю.

Технически, если бы вы хотели, чтобы PHP-сценарии находились в домашнем каталоге вашего пользователя, вам нужно было бы каким-то образом дать пользователю Apache доступ к www-данным для доступа к файлам.

Когда я настраиваю новый сервер, я обычно добавляю себя в группу www-data:

# add user brian to the www-data group
sudo usermod -a -G www-data brian

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

Я позволю www-данным владеть всем в / var / www

# Change all files at /var/www recursively to be owned by www-data
sudo chown -R www-data:www-data /var/www

Сделайте так, чтобы новые файлы, созданные в / var / www, в конечном итоге принадлежали www-data:

#set the gid on any new dir inside /var/www
sudo chmod 2755 /var/www/html

Затем установите себя в качестве владельца, а не www-data:

# Be the owner of all www
sudo chown -R brian:www-data /var/www

Обратите внимание, что я никогда не предоставлял разрешения вне / var / www, но это облегчает управление файлами и каталогами внутри / var / www, поэтому вы не чувствуете необходимости помещать файлы PHP в свой домашний каталог.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]