Как проверить php-файл из командной строки, используя spawn-fcgi
У меня есть скрипт php. Я использую nginx и spawn-fcgi.
spawn-fcgi -n -s /tmp/nginx9010.socket -u www-data -g www-data -f /usr/bin/php5-cgi -C 6
Как я могу проверить из командной строки, что spawn-fcgi
работает со скриптом?
например, у меня есть скрипт в /home/ubuntu/test.php
У меня проблемы с nginx и выполнение сценария php. Это побуждает к загрузке.
я имею #!/usr/bin/php
в файле и сделал chmod a+x
также.
Спасибо
3 ответа
- Для тестирования бэкэнда FastCGI вы можете попробовать создать среду CGI и использовать cgi-fcgi для подключения к бэкэнду.
- Вы можете присоединиться с помощью strace, чтобы посмотреть, что делает бэкэнд (например, получает ли он даже запрос от веб-сервера); присоедините с -ff к главному процессу, чтобы увидеть системные вызовы для всех рабочих
- php5-cgi в режиме FastCGI не нуждается ни в строке shebang, ни в символах +x - он не использует ядро для их выполнения, он просто загружает их как простые файлы
- Firefox (и, возможно, другие браузеры тоже) часто кешируют MIME-тип, поэтому вы увидите приглашение к загрузке даже после устранения проблемы. Используйте curl для тестирования!
nginx не будет обслуживать файл, который он передает в php, nginx обслуживает только статические файлы, поэтому, если он загружает php-файл, вам может понадобиться проверить, что вы отправляете php-файлы в правильное место, используете ли вы IP и PORT в блоке местоположения php в файле конфигурации?
Только предположение о макушке моей головы, пока я ехал домой.
FWIW, проблемы, подобные тому, что nginx предлагает для загрузки файла, вызваны тем, что Nginx сам обслуживает файлы, не отправляя их в бэкэнд fastcgi, часто из-за try_files
или неправильно location {}
сопоставление блоков с URI.