#php #django #apache #curl #wsgi
#php #django #apache #curl #wsgi
Вопрос:
Я настроил приложение django с использованием mod-wsgi и apache. Это приложение протестировано и отлично работает с модулем Linux curl. Однако, когда это приложение вызывается php-кодом через библиотеку curl , я получаю ответ в виде » x1f x8b b» вместо предполагаемого ответа xml.
Оба приложения php и python запущены на одном компьютере с разными портами.
Я пытался искать помощь в Интернете, но бесполезно, поскольку мне не хватает знаний о том, как apache ведет себя в этой ситуации. Любая помощь по этому вопросу приветствуется. Пожалуйста, дайте мне знать, если потребуются какие-либо дополнительные сведения.
Обновить: Я сузил проблему до меньшего количества параметров. Я полностью устранил приложение apache / django / wsgi, запущенное на порту 8000. Теперь php-приложение, запущенное через порт 80, просто пытается (php curl) получить статический текстовый файл через порт 8000.
Даже в этом случае проблема сохраняется, и возвращаемая строка ответа все та же » x1f x8b b» . Следует отметить одну странную вещь: в обоих случаях (приложение django или статический файл) возвращаемый код ответа http равен 200. Я попытался загрузить несуществующий статический файл и заметил, что код ответа равен 404, а ответ все тот же.
Apache прослушивает как 80, так и 8000 портов.
netstat -antp | grep "80"
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4348/python
tcp6 0 0 :::80 :::* LISTEN 1183/apache2
tcp6 0 0 :::8000 :::* LISTEN 1183/apache2
Так что должна быть какая-то проблема с apache, которую я пропускаю. Пожалуйста, помогите.
Спасибо.
Ответ №1:
Я решил проблему. Проблема заключалась в том, что в основном вызов php curl, который я использую, получает ответ в формате gzip. Этого не происходило при вызове Linux curl, поскольку он автоматически распаковывает ответ перед записью.
Мне нужно было только отключить модуль deflate в apache.
a2dismod deflate
Это сработало как шарм. Теперь статические файлы, а также приложение django / wsgi работают без сбоев.
Спасибо.