Разлики со други SAPIs
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Разлики со други SAPIs
Референца за `features.commandline.differences.php` со подобрена типографија и навигација.
Разлики во однос на други SAPIs
Забележителни разлики на CLI SAPI во споредба со други SAPIи:
-
За разлика од CGI SAPI, не се запишуваат заглавја во излезот.
Иако CGI SAPI обезбедува начин за потиснување на HTTP заглавјата, не постои еквивалентен прекинувач за нивно овозможување во CLI SAPI.
CLI се стартува во тивок режим по дифолт, иако -q and --no-header прекинувачите се задржани за компатибилност за да може да се користат постари CGI scripts.
Не ја менува работната директориум на онаа на скриптата. (-C and --no-chdir задржани прекинувачи за компатибилност)
Пораки за грешки во обичен текст (без HTML форматирање).
-
Постојат одредени php.ini директиви кои се надминати од CLI SAPI бидејќи немаат смисла во шел опкружувања:
Надминато php.ini directives Директива CLI SAPI стандардна вредност Коментар html_errors falseСтандардно е false, бидејќи може да биде доста тешко да се читаат пораките за грешки во шел опкружувањето кога тие се преполни со неинтерпретирани HTML tags.implicit_flush trueВо шел опкружување, обично е пожелно излезот, како од print, echo и пријатели, за веднаш да се прикажат, а не да се чуваат во бафер. Сепак, сè уште е можно да се користи баферирање на излезот за одложување или манипулирање со стандардниот излез. max_execution_time 0 (неограничено) PHP во шел опкружување има тенденција да се користи за многу поразновидни цели отколку типичните скрипти базирани на веб, и бидејќи тие можат да работат многу долго, максималното време на извршување е поставено на неограничено. register_argc_argv trueПоставувањето на ова на
trueзначи дека скриптите извршени преку CLI SAPI секогаш имаат пристап до argc (број на аргументи предадени на апликацијата) и argv (низа од вистинските аргументи).PHP променливите $argc and $argv автоматски се поставуваат на соодветните вредности кога се користи CLI SAPI. Овие вредности може да се најдат и во $_SERVER низата, на пример: $_SERVER['argv'].
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваПрисуството на $argv or $_SERVER['argv'] не е сигурна индикација дека скрипта се извршува од командната линија бидејќи тие може да бидат поставени во други контексти кога register_argc_argv е овозможено. Вредноста вратена од php_sapi_name() треба да се провери наместо тоа.
<?php
if (php_sapi_name() === 'cli') {
echo "This is being run from the command line!\n";
}output_buffering falseИако поставката php.ini е тврдо кодирана на
falseсимболот, на пр. Излезно баферирање се достапни.max_input_time falsePHP CLI не поддржува GET, POST или upload на датотеки.
Забелешка:
Овие директиви не можат да се иницијализираат со друга вредност од конфигурациската датотека php.ini или сопствена (ако е специфицирана). Ова ограничување е затоа што вредностите се применуваат откако сите конфигурациски датотеки ќе бидат парсирани. Сепак, нивните вредности можат да се променат за време на извршување (иако ова не е разумно за сите од нив, како што се register_argc_argv).
Забелешка:
Се препорачува да се постави ignore_user_abort за скрипти од командна линија. Погледнете ignore_user_abort() Користење на PHP од командната линија
-
За полесно работење во шел опкружување, дефинирани се голем број константи за I/O потоци .
-
На CLI SAPI does not ја менува тековната директориjа во директориjата на извршената скрипта.
Пример #1 Пример кој ја покажува разликата со CGI SAPI:
<?php
// Our simple test application named test.php
echo getcwd(), "\n";
?>Кога се користи клучниот збор CGI верзија, излезот е:
$ pwd /tmp $ php -q another_directory/test.php /tmp/another_directory
Ова јасно покажува дека PHP ја менува својата тековна директориjа во онаа на извршената скрипта.
Користејќи го CLI SAPI дава:
$ pwd /tmp $ php -f another_directory/test.php /tmp
Ова овозможува поголема флексибилност при пишување шел алатки во PHP.
Забелешка:
На CGI SAPI го поддржува ова CLI SAPI однесување преку -C прекинувач кога се извршува од командна линија.