Простой PHP API выдает ошибку 500 в Cpanel - PullRequest
0 голосов
/ 26 июня 2018

Я следовал этому руководству , чтобы создать простой API с PHP.Он отлично работает на моем компьютере.Я добавил несколько других файлов php в исходную папку и добавил в проект пакет композитора (Firebase / JWT), поэтому была создана папка вендора и пара файлов композитора.Теперь папка проекта выглядит следующим образом:

/
- /plublic
-- .htaccess
-- index.php // requires src/functions.php
- /src
-- connection.php
-- functions.php // requires other src/.php files and JWT from composer
-- panel.php
-- responses.php
- /vendor
-- /composer // and files
-- /firebase // and files
-- autoload.php
.htaccess
composer.json
composer.lock

Я загрузил это на свой хостинг cpanel (в api /), используя поддомен (api.mydomain.com).Я создал поддомен с помощью cpanel и сначала установил в корневой папке api / public, но он не работал (ошибка 500).Затем я попытался указать поддомен на api /, но это тоже не сработало.Что я могу сделать?Я думаю, что проблема в файлах .htaccess.

#root .htaccess
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

#/public .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Я не очень разбираюсь в .htaccess или композиторе, поэтому я ничего не изменил.Спасибо.

1 Ответ

0 голосов
/ 26 июня 2018

Довольно очевидно, почему это не работает.Посмотрите на ваши правила:

#root .htaccess
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
  1. Первое правило в вашем файле .htaccess переписывает любой запрос корня, например, www.example.com или api.example.com/ в подпапку /public.
  2. Второе правило дополняет это и переписывает любой другой запрос в подкаталог / public, например, api.example.com/test - api.example.com/public/test

Таким образом, фактически одно из этих двух правил всегда будетfire.

Поскольку корень файла api.example.com уже установлен в / public, он не может найти подпапку /public/public;таким образом, вы получаете ошибку 500.

Чтобы решить эту проблему, вы можете попытаться удалить оба правила в корне .htaccess или установить корень / api не в подпапку.

Публичный файл / .htaccess имеет типичную конфигурацию с одной точкой входа и должен быть в порядке.

Всегда используйте новый браузер в режиме инкогнито для проверки изменений.

...