Використання php в командному рядку
# 13; Починаючи з версії 4.3.0, PHP підтримує новий вид SAPI (інтерфейс розробки серверних додатків) під назвою CLI. що означає # 13; інтерфейс командного рядка. Як видно з назви, цей вид SAPI призначений для розробки консольних (або навіть десктопних) додатків на PHP. Є кілька несуттєвих відмінностей між CLI SAPI і іншими видами SAPI. які будуть розглянуті в цьому розділі. Буде корисно помітити, що CLI і CGI - різні SAPI -Інтерфейс, хоча в їхній поведінці багато спільного.
# 13; Вперше в якості експерименту CLI SAPI був включений в реліз PHP 4.2.0, і при запуску скрипта ./configure необхідно було явно вказувати опцію --enable-cli. Починаючи з PHP 4.3.0, CLI SAPI не є експериментальним, і опція збірки --enable-cli присутній за замовчуванням. Ви можете відключити CLI SAPI за допомогою опції --disable-cli.
# 13; Що стосується PHP 4.3.0, ім'я, розташування і існування бінарних модулів CLI / CGI залежить від того, як саме встановлений PHP. За замовчуванням при виконанні make створюється як CGI, так і CLI модуль, в каталогах sapi / cgi / php і sapi / cli / php відповідно, всередині директорії з вихідними кодами PHP. Cледует помітити, що обидва файли мають однакову назву: PHP. Що станеться при виконанні make install. залежить від того, які опції ви вказали на стадії конфігурування. У разі, якщо ви віддали перевагу такому модулю SAPI як apxs, або вказали опцію --disable-cgi. модуль CLI буде скопійований в / bin / php при виконанні make install. в іншому випадку буде скопійований CGI-модуль. Наприклад, якщо при запуску скрипта ./configure ви вказали опцію --with - apxs. CLI-версія буде скопійована в / bin / php при виконанні make install. Якщо ви хочете перекрити встановлений CGI-модуль, використовуйте make install-cli після виконання make install. В якості альтернативи ви могли б вказати опцію --disable-cgi при виконанні скрипта ./configure. Зауваження: Оскільки обидві опції, --enable-cli і # 13; - enable-cgi. присутні за замовчуванням, одного присутності рядка --enable-cli при виконанні скрипта ./configure недостатньо для того, щоб CLI-версія була встановлена в / bin / php при виконанні make install.# 13; Дистрибутиви для Windows між версіями PHP 4.2.0 і PHP 4.2.3 включають в себе CLI-модуль як php-cli.exe. розташований в тій же директорії, що і CGI-модуль php.exe. Починаючи з PHP 4.3.0 дистрибутив для Windows влючає в себе CLI-модуль php.exe. розташований в окремій директорії cli. повне ім'я - cli / php.exe. Починаючи з PHP 5, CLI-модуль розташований в основний директорії і називається php.exe. CGI-модуль також включений в дистрибутив під назвою php-cgi.exe.
# 13; Починаючи з PHP 5, в дистрибутив для Windows входить новий файл php-win.exe. Він повністю еквівалентний CLI, за винятком того, що php-win абсолютно нічого не виводить, що призводить до ВІДСУТНІСТЬ консолі (вікно DOS не з'являється на екрані). Це поведінка схоже на php-gtk. При складанні з вихідних кодів вам необхідно вказати опцію --enable-cli-win32.
Який з варіантів SAPI встановлений. Виконайте з командного рядка php -v для отримання інформації про те, який з двох модулів PHP встановлений: CGI або CLI. Також ви можете використовувати для цього функцію php_sapi_name () або константу # 13; PHP_SAPI.
Зауваження: Відповідна сторінка керівництва Unix була додана в PHP 4.3.2. Ви можете побачити її, виконавши в консолі man php.
# 13; Основні відмінності CLI SAPI від інших реалізацій SAPI.
# 13; На відміну від CGI SAPI заголовки не пишуть в потік виводу.
# 13; Незважаючи на те, що в CGI SAPI є спосіб придушити HTTP-заголовки, в CLI SAPI немає можливості їх включити.
# 13; CLI за замовчуванням запускається в режимі з придушенням повідомлень, проте, ключі -q і --no-header збережені для зворотної сумісності, що дозволяє використовувати написані раніше CGI-скрипти.
# 13; Поточна директорія не змінюється на робочу директорію скрипта. (Ключі -C і --no-chdir збережені для зворотної сумісності)
# 13; Повідомлення про помилки видаються в текстовому режимі (без HTML-форматування).
# 13; Деякі настройки php.ini перевизначені в CLI SAPI. оскільки вони не мають особливого сенсу при роботі в командному рядку:
Таблиця 43-1. Переобумовленої директиви php.ini
# 13; довантажувати додатковий модуль Zend. У разі, якщо вказано тільки ім'я файлу, PHP шукає модуль в поточному шляху до бібліотек за замовчуванням (в Linux-системах він звичайно зазначений в /etc/ld.so.conf). У разі, якщо зазначене ім'я файлу і повний шлях до нього, пошук в системних бібліотеках не проводиться. Вказівка відносного шляху до модуля призведе до пошуку файлу за вказаною шляху щодо поточної директорії.
# 13; Ця опція надає зручний спосіб для перевірки заданого PHP-коду на наявність синтаксичних помилок. У разі успішної перевірки буде надрукована наступна фраза: "No syntax errors detected in
# 13; Перевірка вихідного коду за допомогою даної опції не знаходить фатальних помилок (наприклад, таких як виклик невизначених функцій). Використовуйте опцію -f. якщо ви хочете перевірити код на наявність фатальних помилок.
Зауваження: Ця опція несумісна з опцією -r.