Как отладить HTTP ERROR 500 с помощью apache и php?

У меня есть Rest API, который работает на моей локальной машине. Но при загрузке на сервер я получаю некоторые ошибки.

Я установил Apache, PHP и пакет php-cli.

$ sudo apt install apache2
$ sudo apt install php libapache2-mod-php 
$ sudo apt install php-cli

Я включил модуль Apache и mod_rewrite в Apache

$ sudo a2enmod php7.0
$ sudo a2enmod rewrite

Я также проверил, что mod_rewrite включен с помощью:

$ ls /etc/apache2/mods-enabled | grep rewrite

И я проверил, что PHP работает на веб-сервере с использованием SSH.

$ sudo wget http://localhost/info.php

Мой каталог v0 содержит index.php и .htaccess

При выполнении любого запроса с Postman я получаю следующие ошибки:

  • Запрошенный URL-адрес /APIs/cluvi/v0/employees не найден на этом сервере.
  • Сервер Apache/2.4.25 (Debian) на ‹ EXTERNAL-IP > Port 80

При входе из браузера получаю следующую ошибку:

  • ОШИБКА HTTP 500

Тогда у меня есть некоторые наблюдения:

  1. Когда вы удаляете файл .htaccess, ошибка сохраняется.
  2. При удалении файла index.php ошибка исчезает, когда я вхожу в каталог v0 из браузера, потому что отображается содержимое каталога.

Я также читал, что это может быть проблема с разрешениями. Мои разрешения для папок и файлов:

$ sudo usermod -a -G www-data your_username
$ sudo chgrp -R www-data /var/www/html 
$ sudo chmod -R g+w /var/www/html

Я развернул API с помощью LAMP, и у меня не было проблем. Но, возможно, устанавливая Apache и PHP отдельно, я не учитываю то, чего не понимаю. Или у меня есть какая-то ошибка в коде index.php, которую я не вижу, и я хотел бы знать, как отлаживать этот статус HTTP.


РЕШЕНИЕ

/var/журнал/apache2/журнал_ошибок

PHP Warning:  require_once(webpresentation/views/JsonView.php): failed to open stream: No such file or direct$
PHP Fatal error:  require_once(): Failed opening required 'webpresentation/views/JsonView.php' (include_path=$

Решение: В URL-адресе запроса был сегмент more, которого не было в структуре каталогов серверного проекта. Поэтому решением было сравнить URL со структурой каталогов и сопоставить их.

PHP Fatal error:  Uncaught Error: Call to undefined function utf8_encode() in /var/www/html/APIs/cluvi/app-cl$

Решение: $ sudo apt-get install php7.0-xml && sudo systemctl restart apache2

И, наконец, у меня были следующие ошибки:

  • Предупреждение PHP: require_once...
  • Неустранимая ошибка PHP: require_once()

Что я решил, сохранив метод require_once(), который был у меня в приложении, развернутом локально.

Наконец, моим основным решением было использование файла /var/log/apache2/error_log и установка php7.0-xml, чтобы избежать ОШИБКИ HTTP 500.

Спасибо


person Braian Coronel    schedule 18.12.2018    source источник
comment
Если ошибка 500, то в журнале ошибок php должно быть что-то   -  person Ray A    schedule 18.12.2018
comment
Вы должны прочитать журналы ошибок php. Я бы порекомендовал создать среду разработки докеров, соответствующую стеку вашего сервера, это предотвратит подобные проблемы в будущем!   -  person Romano Schoonheim    schedule 18.12.2018
comment
35.243.140.230/info.php   -  person Braian Coronel    schedule 18.12.2018
comment
@RomanoSchoonheim Предотвращает ли LAMP и это? Если у вас есть учебник, чтобы порекомендовать Docker, я бы с удовольствием его прочитал.   -  person Braian Coronel    schedule 18.12.2018
comment
При удалении файла index.php ошибка исчезает, когда я вхожу в каталог v0 из браузера, потому что отображается содержимое каталога.... кажется, у вас фатальная ошибка в файле index,php   -  person Shanteshwar Inde    schedule 18.12.2018
comment
@RomanoSchoonheim Кто-то пытается найти свои журналы ошибок, и вы предлагаете Docker!? Это звучит так же, как если бы вы сказали кому-то, кто только учится ходить, попробовать побегать, так вы пойдете быстрее. Ключевым советом здесь является чтение журналов ошибок PHP.   -  person IMSoP    schedule 18.12.2018
comment
@IMSoP Я полностью с вами согласен, это было нелепое предложение использовать докер для предотвращения экологических проблем. IT-разработчики игнорируют предложение докера, вам поможет чтение журналов ошибок!   -  person Romano Schoonheim    schedule 18.12.2018
comment
@RomanoSchoonheim Это разумное предложение для тех, у кого есть шанс добиться успеха. Docker — непростая технология, поэтому у тех, кто только начинает, возникнет целый ряд головных болей, пытаясь понять ее. Если вопрос заключался в том, что я перехожу из среды X в среду Y, и я получаю эту ошибку из-за разницы в конфигурации сервера, попробуйте использовать Docker, чтобы минимизировать различия при миграции, это может быть хорошим ответом; но у меня сложилось впечатление, что ОП в этом случае еще не на этом этапе.   -  person IMSoP    schedule 18.12.2018
comment
Я решил свою ошибку, используя журнал php   -  person Braian Coronel    schedule 19.12.2018
comment
@ShanteshwarInde Контент отображался, потому что я включил SetEnv DEVELOPMENT.   -  person Braian Coronel    schedule 19.12.2018
comment
@IMSoP В любом случае я прочитал документацию и отобразил образы Docker (неофициальное программное обеспечение Jira), но я хотел использовать только то, что необходимо для этого API. И я не использовал LAMP, потому что у меня есть БД на другом сервере.   -  person Braian Coronel    schedule 19.12.2018