Відмінності між CLI і CGI
PHP може працювати в різних середовищах. Найпоширенішим середовищем є CGI, яке запускається, коли PHP обробляє HTTP-запит. Oднак, також можна запустити PHP-скрипт з Терміналу, в цьому випадку це так зване завдання CLI (Command-line interface - інтерфейс командного рядка).
Найважливіші відмінності між CLI і CGI
- На відміну від
CGI SAPI,CLIза замовчуванням не записує ніяких заголовків у вивід. - Існують деякі директиви
php.ini, які перевизначаються вCLI SAPI, оскільки вони не мають сенсу в середовищі оболонки: html_errors: CLI за замовчуванням має значенняFALSE.implicit_flush: значення за замовчуванням в CLI - `TRUEmax_execution_time: значення за замовчуванням в CLI -0(необмежено)register_argc_argv: значення за замовчуванням в CLI - `TRUE- Скрипт може приймати аргументи командного рядка! Змінна
$argcмістить кількість аргументів, переданих програмі. A поле$argvдає масив фактичних аргументів - Для середовища оболонки визначено 3 нові константи:
STDIN,STDOUT,STDERR. Всі вони є обробниками файлів для відповідного пристрою оболонки. Наприклад,STDINє обробником файлу дляfopen('php://stdin', 'r'). Таким чином, прочитати рядок зSTDINможна так:$strLine = trim(fgets(STDIN));. STDIN вже визначений для вас за допомогоюPHP CLI. - PHP CLI не змінює поточний каталог на каталог виконуваного скрипта. Поточною директорією для скрипта буде директорія, в якій ви запускаєте команду PHP CLI.
- Існує ряд КOРИСНИХ опцій, доступних для PHP CLI. Які дозволяють отримати деяку цінну інформацію про налаштування вашого php, вашого php скрипта або запустити його в різних режимах.
- У PHP 5 відбулися деякі зміни в іменах CLI і CGI файлів. У PHP 5 CGI-версія перейменована в
php-cgi.exe(ранішеphp.exe), а CLI-версія тепер знаходиться в головному каталозі (ранішеcli/php.exe). - У PHP 5 також з'явився новий режим:
php-win.exe. Це еквівалентно CLI-версії, за винятком того, що вphp-winнічого не друкується, а отже, відсутня консоль (на екран не виводиться "dos box"). Така поведінка схожа на "PHP GTK".