Подтвердить что ты не робот

В чем разница между php cli и php cgi?

Очень простой вопрос для вас. Я просто нашел два исполняемых файла php-cgi.exe и php.exe в папке bin на сервере WAMP на моем ноутбуке. Я изучаю PHP и не могу понять разницу. В чем разница между ними?

4b9b3361

Ответ 1

PHP CLI - это интерфейс командной строки для PHP (например, для создания автономных приложений)
PHP CGI - это общий интерфейс шлюза для PHP (например, для веб-приложений).

Ответ 2

От http://www.php-cli.com/php-cli-cgi.shtml

Это самые важные различия между CLI и CGI:

  • В отличие от CGI SAPI, CLI не записывает заголовки на вывод по умолчанию
  • Существуют некоторые директивы php.ini, которые переопределяются CLI SAPI, потому что они не имеют смысла в средах оболочки:
    • html_errors: значение CLI по умолчанию FALSE
    • implicit_flush: значение CLI по умолчанию TRUE
    • max_execution_time: значение CLI по умолчанию равно 0 (неограниченно)
    • register_argc_argv. Значение по умолчанию для CLI: TRUE
  • У вас могут быть аргументы командной строки с помощью script! переменная "$ argc" предоставляет вам ряд аргументов, переданных в выражение. И массив "$ argv" дает вам массив фактических аргументы
  • В среде оболочки есть 3 новые константы: STDIN, STDOUT, STDERR. Все они являются обработчиками файлов для соответствующие устройства оболочки. Например, STDIN является обработчиком fopen ('php://stdin', 'r'). Итак, вы можете прочитать строку из STDIN, например this: $strLine = trim (fgets (STDIN));. STDIN уже определен для вы с помощью PHP CLI!
  • PHP CLI не изменяет текущий каталог в каталог выполненный script. Текущий каталог для script будет где ваша команда PHP CLI типа.
  • Для PHP CLI существует несколько ПОЛЕЗНЫХ параметров. Который будет позволяют получить ценную информацию о настройке php, php script или запустить его в разных режимах.
  • В PHP 5 произошли некоторые изменения в именах файлов CLI и CGI. В PHP 5, версия CGI была переименована в php-cgi.exe(ранее php.exe) и версия CLI теперь находится в главном каталоге (ранее кли /php.exe).
  • В PHP 5 был также введен новый режим: php-win.exe. Это равный версии CLI, за исключением того, что php-win ничего не выводит и, таким образом, не дает консоли (на экране не появляется "dos box" ). Это поведение похоже на PHP GTK.

Ответ 3

php-cgi предназначен для веб-сервера. Среди прочего он обрабатывает HTTP-заголовки для вас.

Версия CLI предназначена для запуска в командной строке (отсюда "Интерфейс командной строки" ). Это не обрабатывает заголовки или любые другие связанные с сервером вещи.

Ответ 4

CLI предназначен для сценариев командной строки, CGI предназначен для веб-запросов

Ответ 5

php-cli предназначен для запуска PHP в командной строке. php-cgi делает для вас дополнительные вещи, такие как заголовки HTTP и некоторые модификации безопасности.

Сказав это, рассмотрим возможность установки модуля FastCGI и использования PHP FastCGI-интерфейса. Это должно запускать PHP заметно быстрее, чем php-cgi. Я считаю, что стандартный модуль Apache FastCGI mod_fcgid.

Ответ 6

Это может дать вам более широкое понимание их разницы:

CGI: (общий интерфейс шлюза). Это "протокол" спецификации для передачи информации между веб-сервером и программой CGI.

Программа CGI - это любая программа, предназначенная для приема и возврата данных, соответствующих спецификации CGI.

В основном это способ запуска серверной части script (PHP, Perl, Python,...) при появлении HTTP-запроса.

CGI очень медленный по сравнению с другими альтернативами.


FastCGI: - лучший CGI.

Быстрый CGI - это другой подход с гораздо более быстрыми результатами.

Это CGI с несколькими расширениями.

Реализация FastCGI больше не доступна в пользу PHP-FPM.


PHP-FPM: (FastCGI Process Manager), это лучшая реализация FastCGI, чем старый FastCGI.

Он работает как автономный сервер FastCGI.

В общем, это интерфейс PHP для веб-серверов (Apache, Nginx..), позволяющий Web-серверу взаимодействовать с PHP.

В отличие от PHP-CLI, который является интерфейсом командной строки для PHP, позволяет пользователям взаимодействовать с PHP через терминал.


mod_php: модуль Apache для запуска PHP.

Он выполняет PHP-скрипты внутри веб-сервера непосредственно как часть веб-сервера без связи с программой CGI.


mod_SuPHP: похож на mod_php, но может изменить пользователя/группу, в которой выполняется процесс.

В основном он адресует некоторые проблемы mod_php, связанные с разрешениями.