Frapi API выдает ошибку 500 для правильного URL действия, иначе выдает ERROR_INVALID_ACTION_REQUEST

Последние три дня я пытался настроить инфраструктуру FRAPI на AWS. Я настроил панель администратора без ошибок, но по какой-то причине часть API не работает. Однако я могу получить доступ к домашней странице API, которая выполняет действия, созданные в панели администратора. (См. http://www.serverstars.net/)

Вот странная вещь: если я ввожу несуществующий URL-адрес действия, я получаю ошибку FRAPI "ERROR_INVALID_ACTION_REQUEST". Однако, если я введу URL-адрес реального действия, я получу ошибку 500. (См. http://www.serverstars.net/get/banned/36.json)

Конфигурация виртуального хоста Api:

<VirtualHost *:80>
    ServerName serverstars.net
    ServerAlias www.serverstars.net
    ServerAdmin admin@api.frapi
    DocumentRoot /var/www/frapi/src/frapi/public

    <Directory /var/www/frapi/src/frapi/public>
        AllowOverride All
        Order deny,allow
        Allow from All
    </Directory>
</VirtualHost>

Переписать.htaccess для / var / www / frapi / src / frapi / public

RewriteEngine On
RewriteRule ^.*$ index.php [QSA,NC,L]

Я подозреваю, что RewriteRule вызывает проблему, или, возможно, MySQL conn, но я сомневаюсь, что соединение SQL выдает ошибку 500.

Ваша помощь очень ценится!

1 ответ

Решение

Рассматривая другие части вашего API, в основном установленные вызовы API по умолчанию, мы видим, что правила перезаписи работают нормально.

http://www.serverstars.net/collection/foo.json

Проблема, скорее всего, кроется в модели, которая либо выбирает данные из запроса mysql и помещает их в переменную $this->data, либо эта проблема возникает между PHP и MySQL.

Хотя я не могу дать вам прямой ответ, я бы посоветовал вам взглянуть на следующее:

  1. Убедитесь, что все разрешения настроены правильно, просмотрев: http://frapi.github.io/installing/index.html
  2. Напечатайте результаты запроса mysql непосредственно после его получения и используйте die() (да, попробуйте отладку print-and-die),
  3. В вашем контроллере забаненных коллекций попробуйте удалить запрос MySQL и поместить переменную mock для возврата. Это подтвердит, достигли ли правила переписывания вашего контроллера,
  4. Если фиктивная переменная возвращается правильно после удаления SQL-запроса и его результатов, посмотрите на отладку значений, возвращаемых SQL-запросом, и на то, как вы выбираете соответствующие данные из него.
  5. Если все не удается, убедитесь, что у вас есть журналы на стороне Apache, а также посмотрите журнал ошибок PHP. Если у вас не включены php-error-logs, добавьте это в ваш php.ini:

    error_log = / tmp / php_error_log

Теперь это не дает прямого ответа на ваш вопрос, но, надеюсь, это поможет вам найти ответ, который вы ищете:-)

Другие вопросы по тегам