Використання php з командного рядка
Починаючи з версії 4.3, РНР підтримує новий SAPI -тип (Server Application Programming Interface) під назвою CLI. що означає Command Line Interface. Як випливає з назви, головним завданням цього SAPI-типу є розробка оболонки / shell (або робочого столу) додатків за допомогою РНР. Є дуже невеликі відмінності CLI SAPI від інших SAPI. які будуть розглянуті далі в цій главі.
CLI SAPI був випущений в перший раз з PHP 4.2.0. але тоді це був експеримент, і потрібно було явно включати його командою --enable-cli при запуску ./configure. Починаючи з PHP 4.3.0. CLI SAPI більше не є експериментальним і завжди вбудований і встановлюється як двійковий виконуваний файл php (називається php.exe в Windows).
Істотні відмінності CLI SAPI від інших SAPI.На відміну від CGI SAPI. ніякі шапки / headers не заносяться в висновок.
Хоча в CGI SAPI є спосіб придушення HTTP-шапок, еквівалентного перемикача для їх включення в CLI SAPI немає.
Є певні директиви php.ini. які перевизначені в CLI SAPI. оскільки вони не мають сенсу в середовищі оточення оболонки:
Таблиця 24-1. Перевизначення php.ini -діректів
CLI SAPI- значення за замовчуванням
Буває досить складно прочитати в оболонці повідомлення про помилку, наповнене всіма цими безглуздими HTML -тегамі, тому за замовчуванням значення цієї директиви FALSE.
Бажано, щоб будь-який висновок з print (). echo () і компанії негайно записувався в висновок, а не відправлявся в який-небудь буфер. Ви все ще можете користуватися буферизацией виведення. якщо хочете попрацювати зі стандартним висновком.
Через нескінченно великих можливостей використання PHP в середовищі оточення оболонки, максимальний час виконання не обмежена. У той час як додатки, написані для web, виконуються протягом часток секунди, додатки оболонки намагаються зайняти для свого виконання максимальний час.
Глобальні змінні PHP $ argc (кількість аргументів, переданих з додатком) і $ argv (масив поточних аргументів) завжди реєструються і заповнюються відповідними значеннями при використанні CLI SAPI.
Примітка: Ці директиви не можуть бути ініційовані іншим значенням з файлу конфігурації php.ini або спеціального файлу (якщо специфікований). Це є деяким обмеженням, оскільки ці значення за замовчуванням застосовуються після розбору всіх файлів конфігурації. Однак їх значення може бути змінено на етапі прогону програми (що не має сенсу для всіх інших директив, наприклад, для register_argc_argv).
Легше працювати в середовищі оболонки, коли визначені наступні константи:
Таблиця 24-2. Специфічні CLI-константи
Завантажує Zend-розширення. Якщо задано тільки ім'я файлу, PHP намагається завантажити дане розширення з поточного шляху за замовчуванням до бібліотеки у вашій системі (зазвичай специфицируется як /etc/ld.so.conf в Linux-системах). Передача filename з абсолютним шляхом не використовуватиме системний шлях пошуку бібліотеки. Відносне filename з інформацією директорії скаже PHP - спробувати завантажити розширення щодо поточної директорії.
Ця опція надає зручний спосіб виконання перевірки синтаксису даного PHP-коду. У разі успіху - текст No syntax errors detected in
Ця опція не буде знаходити фатальні помилки (начебто не певних функцій). Використовуйте -f. якщо хочете перевірити також і наявність фатальних помилок.
Примітка: Ця опція не працює разом з -r.
Використовуючи цю опцію, PHP друкує на висновок вбудовані (і завантажені) модулі PHP і Zend: