У меня есть 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
Тогда у меня есть некоторые наблюдения:
- Когда вы удаляете файл .htaccess, ошибка сохраняется.
- При удалении файла 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.
Спасибо