Main > Apache | PHP > apache + php-fpm = No input file specified

apache + php-fpm = No input file specified

02.11.2017 0 comments » Views: 1,830

Apache logo

Столкнулся с ошибкой "No input file specified", при использовании php-fpm в связке с Apache. Довольно долго разбирался в проблеме, пока не нашел решение. О нем сейчас и расскажу..

Проблема возникала, в случае, когда запрашивался php файл которого не было на сервере.

  • запрашиваем site.com/index.php все работает (есть файл index.php)
  • запрашиваем site.com/abc все работает (показывает 404 файл не найден)
  • запрашиваем site.com/abc.php показывает ошибку No input file specified

Проблема была в том, как передаются параметры из апача в php. В моем случае конфигурация выглядела так:

Т.е. все запросы с концовкой на .php передаются в php-fpm, а именно он и генерирует ошибку, когда не может найти нужного файла.

Соответственно, надо проверить в самом апаче, есть ли такой php файл и только в случае его наличия передавать управление дальше, внутрь php-fpm.

В сети, есть много решений с настройкой через mod_rewrite, когда в RewriteCond проверяется есть ли этот файл, а в случае его отсутствия делается RewriteUrl на точку входа (index.php). Но мне такой вариант не понравился, и я пошел читать справку по апачу.

Потратив еще немного времени, я нашел директиву If в которой и надо, на мой взгляд, делать проверку, тем самым не нагружая mod_rewrite. Код преобразился вот так:

Теперь, если файла не существует, то будет сгенерирована стандартная ошибка об отсутствии файла.

 

Author: | Rating: 4/5 | Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>