Вопрос или проблема
Итак, все работало нормально после того, как я изменил некоторые разрешения папки внутри /var/www/html
. Это был просто случайный проект. Если я правильно помню, я просто сделал chmod u+x
, и все.
Это, видимо, создало весь беспорядок, т.е. когда я открываю PHP файлы сейчас, они возвращают пустые страницы.
Устранение неполадок, которые я провел до сих пор:
1) Удалил и заново установил полный LAMP стек.
2) phpinfo()
работает нормально.
3) Попробовал большинство решений Google, касающихся разрешений, которые, я уверен, испортили мои разрешения /var
или по крайней мере /var/www
. Попробовал каждый набор безопасных или небезопасных разрешений, которые я нашел, но безрезультатно.
4) /var/log/apache2/error.log
– http://pastebin.com/hfztqt0C
5) Попробовал изменить место нахождения каталога Apache с /var/www/html
на /home/username/Documents/abc
, но получал ошибку 403 Forbidden. Теперь это другая проблема, так как я применил некоторые быстрые предложенные разрешения, следуя результатам Google:
chgrp -R www-data /home/username/Documents
chmod -R 2750 /home/username/Documents
Но это не сработало.
Пожалуйста, помогите мне, переустановка Ubuntu – это, конечно, последний вариант, но я бы хотел решить это, подкорректировав настройки, так как это наверняка поможет мне научиться новым вещам. Если проблему с /var/www
не удастся решить, то я хочу, чтобы изменение каталога Apache сработало.
Спасибо
Согласно вашему файлу журнала, есть несколько вещей, которые не так. Важно решить их по отдельности. В журнале много сообщений, касающихся AH01630, что означает, что у клиента нет доступа. Это обычно связано с различием между Apache 2.2 и 2.4.
Директива, которая важна, это Require:
В конфигурации 2.2 вы должны иметь:
Order allow,deny
Allow from all
В конфигурации 2.4 вы должны иметь:
Require all granted
.
Пожалуйста, внесите правильное изменение и проверьте, исчезнут ли эти сообщения об ошибках из журнала.
Посмотрите, например, на строку 130 файла журнала на вашем pastebin. Она упоминает, что не может найти index.php. Убедитесь, что ссылка на этот файл правильная, и для файлов, которые упоминаются в подобных записях тоже. Затем, пожалуйста, сделайте новый дамп вашего файла журнала, и мы продолжим.
.
Ответ или решение
Для решения проблемы с PHP, возвращающим пустые страницы, необходимо внимательно разобраться с текущей ситуацией, учитывая изменения в конфигурации и возможные ошибки в правах доступа. Давайте рассмотрим возможные причины и шаги для устранения неполадок.
Теория
1. Права доступа и их влияние:
Первоначальные изменения в правах доступа, такие как chmod u+x
, могли изменить права исполнения для пользователя, но это, скорее всего, не повлияло на саму проблему пустых страниц. Гораздо более вероятно, что последующие изменения, которые вы внесли, затронули права доступа к файлам и директориям, что критически важно для веб-сервера Apache и интерпретатора PHP.
2. Настройки Apache:
Ошибки конфигурации Apache могут привести к запретам на доступ к файлам. В Apache версии 2.4 поведение конфигурации контроля доступа было изменено по сравнению с версией 2.2. Если ваша конфигурация всё ещё использует старую директиву Order allow,deny
, это может вызвать проблемы с доступом, что, в свою очередь, отразится в пустых страницах или сообщениях об ошибках.
3. Логирование и ошибки PHP:
Пустые страницы часто являются следствием скрытых ошибок PHP, которые не отображаются из-за настроек, запрещающих вывод ошибок на экран. Лог-файл ошибок Apache может предоставить ключ к пониманию основной проблемы. В случаях, когда phpinfo()
работает, но другие страницы нет, возможно, проблема связана с индивидуальными файломи или скриптами, которые вы пытаетесь запустить.
Пример
Пример из вашего лога Apache показывает, что клиентам отказывается в доступе, и в нём фигурируют ошибки типа AH01630
. Это может быть связано с неправильной конфигурацией окружения контролирования доступа. Также, в строке 130 упоминается, что сервер не может найти index.php
. Это может указывать на проблему с путём или недостаточными правами доступа.
Применение
Шаг 1: Проверка и настройка прав доступа
Проверьте и убедитесь, что папки \var\www
и \var\www\html
имеют правильные права:
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www
Эта команда установит www-data как владельца и группу, что соответствует владельцу Apache в стандартных установках Ubuntu.
Шаг 2: Исправление конфигурации Apache
Если вы используете Apache 2.4, убедитесь, что ваши директивы доступа выглядят так:
<Directory /var/www/html>
Require all granted
</Directory>
Для старых версий, используйте:
<Directory /var/www/html>
Order allow,deny
Allow from all
</Directory>
Шаг 3: Обработка PHP-ошибок
Измените настройки PHP для отображения ошибок, добавив или изменив следующее в вашем php.ini
:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
Перезапустите Apache после внесения изменений:
sudo systemctl restart apache2
Шаг 4: Использование журналов
Пересмотрите журнал ошибок Apache после вышеперечисленных измененй. Постарайтесь выявить и исправить любые оставшиеся сообщения об ошибках. Уделите особое внимание сообщениям, которые могут указывать на проблемы с доступом или отсутствующие файлы.
Этот подход поможет вам отладить проблему, определить источник ошибки и восстановить работоспособность вашего веб-сервера без необходимости полной переустановки системы. CompletableFuture