Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2024.11.21
Bog BOS: PHP
Интерпретатор (в версии 4 с предкомпилятором) языка, встраиваемого в HTML-страницы.
Исполняется как модуль Apache (SAPI)
или CGI-программа на стороне сервера.
В результате клиент получает сгенерированную PHP-программой HTML-страницу (или XML, PDF, flash,
PNG и т.д.). Может кешировать динамически создаваемые объекты.
В сочетании с Linux и MySQL
(LAMP - Linux Apache Mysql Php) незаменим для создания динамических
сайтов, не потребляющих много ресурсов (как компьютерных, так и финансовых).
Работает не только под Linux, но и под Unix (Solaris, xBSD, HP-UX и т.д.),
Mac OS X, MS Windows и т.д..
Вместо Apache можно использовать MS IIS, Personal Web Server, Netscape, iPlanet,
Oreilly Website Pro, Caudium, Xitami, OmniHTTPd и др..
Вместо MySQL можно использовать Oracle, Informix, PostgreSQL, dBase, Sybase MS SQL, dbm, ODBC
(в списке более 20 СУБД).
Поддерживает процедурный и объектно-ориентированный стиль программирования.
Имеется поддержка протоколов LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM и прямой доступ
к сокетам. Обработка регулярных выражения и XML (SAX, DOM), XSLT.
Лицензия - PHP (не модифицировать и не отсоединять Zend Engine).
- доставить пакеты libxml2-devel, bzip2-devel, gdbm-devel, libpng-devel
- загрузить php-5.2.5.tar.bz2 (расширения и модули внутри)
- развернуть РЯДОМ с развернутым apache
- запуск configure в разделе apache 2 с нужными ключами
- зайти обратно в php
- ./configure --bindir=/usr/local/php/bin --sysconfdir=/usr/local/php/etc --libdir=/usr/local/php/lib --includedir=/usr/local/php/include --disable-cli --disable-cgi --enable-safe-mode --with-exec-dir=/usr/local/php/bin --disable-ipv6 --with-openssl [--with-kerberos] --with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-gdbm [--with-db4] --with-gd --with-iconv --with-mysql[=/usr/local/mysql|=/usr/lib64/mysql] --with-apxs2=/usr/local/apache2/bin/apxs [--with-libdir=lib64]
- make (180 MB)
- make install
- /usr/local/apache2/modules/libphp5.so (18 MB!)
- добавляет загрузку modules/libphp5.so в httpd.conf
- /usr/local/php/lib/build/
- /usr/local/php/include/php/
- /usr/local/php/bin/: phpize, php-config
- cp php.ini-recommended /usr/local/php/lib/php.ini (без него не работает phpMyAdmin)
- отредактировать php.ini (register_globals?,
display_errors=off, log_errors=on, arg_separator.input = ";&")
- задуматься о безопасности
- остановить apache
- отредактировать httpd.conf
- для виртуального хоста: AddType application/x-httpd-php .php
- запустить apache
- загрузить php-4.3.11.tar.gz (расширения и модули внутри)
- развернуть РЯДОМ с развернутым apache
- запуск configure в разделе apache 2 с нужными ключами
- зайти обратно в php
- ./configure --bindir=/usr/local/php/bin --sysconfdir=/usr/local/php/etc --libdir=/usr/local/php/lib --includedir=/usr/local/php/include --disable-cli --disable-pear --disable-cgi --enable-safe-mode --with-exec-dir=/usr/local/php/bin --with-openssl --with-zlib --enable-bcmath --enable-calendar --with-gd --with-iconv --with-mysql=/usr/local/mysql --enable-memory-limit --with-apxs2=/usr/local/apache2/bin/apxs
- make (46 MB)
- make install
- /usr/local/apache2/modules/libphp4.so
- добавляет загрузку modules/libphp4.so в httpd.conf
- /usr/local/lib/php/build/
- /usr/local/php/include/php/
- /usr/local/php/bin/: phpextdist, phpize, php-config
- mkdir /usr/local/php/lib
- cp php.ini-recommended /usr/local/php/lib/php.ini
- отредактировать php.ini (register_globals, display_errors, log_errors)
- безопасность
- остановить apache
- отредактировать httpd.conf
- для виртуального хоста: AddType application/x-httpd-php .php
- запустить apache
- загрузить php-4.3.7.tar.gz (расширения и модули внутри)
- развернуть РЯДОМ с развернутым apache
- запуск configure в разделе apache с нужными ключами
- зайти обратно в php
- ./configure --bindir=/usr/local/php437/bin --sysconfdir=/usr/local/php437/etc --libdir=/usr/local/php437/lib --includedir=/usr/local/php437/include --with-apache=../apache_1.3.12rusPL29.4_PHP437 --with-mod_charset --disable-cli --disable-pear --disable-cgi --enable-safe-mode --with-exec-dir=/usr/local/php437/bin --with-openssl --with-zlib --enable-bcmath --enable-calendar --with-gd (конфликтует модулем cntr) --with-iconv --with-mysql=/usr/local/mysql --enable-memory-limit
- make (72 MB)
- make install (для записи в /usr/local требуется root)
- ${APACHE}/src/modules/php4/: libmodphp4.a (13 MB!), libphp4.module, mod_php4.*, Makefile.tmpl, Makefile.libdir
- /usr/local/lib/php/build
- /usr/local/php437/include/php/
- /usr/local/php437/bin/: phpextdist, phpize, php-config
- cd ../PHP
- cp php.ini-dist /usr/local/php437/lib/php.ini
- отредактировать php.ini (register_globals, display_errors, log_errors)
- безопасность
- cd ../${APACHE}
- ./configure --activate-module=src/modules/php4/libphp4.a (+ другие ключи)
- make
- остановить apache
- make install (если apache пересобирался толька для PHP, то достаточно скопировать src/httpd
- отредактировать httpd.conf
- для виртуального хоста: AddType application/x-httpd-php .php
- запустить apache
- загрузить php-4.0.4pl1.tar.gz
- загрузить дополнительные модули
- SNMP (http://www.ece.ucdavis.edu/ucd-snmp/)
- gd (http://www.boutell.com/gd/#buildgd)
- MySQL
- zlib (http://www.cdrom.com/pub/infozip/zlib/)
- expat XML parser (http://www.jclark.com/xml/expat.html)
- развернуть РЯДОМ с развернутым apache
- запуск configure в разделе apache с нужными ключами
- зайти обратно в php
- ./configure -with-mysql=/usr/local/mysql -with-gd=/usr/local (конфликтует с mod_cntr в apache) -with-apache=../apache_1.3.12rusPL29.4 -enable-calendar -enable-memory-limit -enable-safe-mode -enable-trans-sid -with-config-file-path=/usr/local/php/php.ini -with-exec-dir=/usr/local/php/bin -with-mod_charset -enable-bcmath
- make
- make install (для записи в /usr/local требуется root)
- ${APACHE}/src/modules/php4: libs/libphp4.a (как libmodphp4.a - 8 MB!), sapi/apache/mod_php4.* sapi/apache/libphp4.module, sapi/apache/apMakefile.tmpl (как Makefile.tmpl), sapi/apache/apMakefile.libdir (как Makefile.libdir)
- /usr/local/lib/php (библиотека п/п на PHP)
- /usr/local/bin: phpextdist, phpize, php-config, pear
- cd ../${APACHE}
- ./configure --activate-module=src/modules/php4/libphp4.a (+ другие ключи)
- make
- остановить apache
- make install (если apache пересобирался толька для PHP, то достаточно скопировать src/httpd
- запустить apache (чтоб не простаивал на время конфигурации PHP ;)
- cd ../PHP
- cp php.ini-dist /usr/local/php/php.ini
- отредактировать php.ini
- отредактировать httpd.conf
- для виртуального хоста: AddType application/x-httpd-php .php
- безопасность
- -with-db2[=директория]
- -with-db3[=директория]
- -with-dbm[=директория]
- -with-gdbm[=директория]
- -with-ldap[=директория]
- -with-msql[=директория]
- -with-mysql[=директория] (по умолчанию, используется собственная реализация клиентской библиотеки!)
- -with-ndbm[=директория]
- -with-pgsql[=директория]
- -with-gd[=директория]
- -enable-bcmath (большие числа)
- -enable-c9x-inline
- -enable-calendar
- -enable-dmalloc
- -enable-exif
- -enable-force-cgi-redirect (закрывает дырку в системе безопасности при использовании как CGI)
- -enable-inline-optimization (дополнительная оптимизация при компиляции - требует много памяти)
- -enable-memory-limit
- -enable-safe-mode
- -enable-sattelite (поддержка CORBA через sattelit - нужен ORBit)
- -enable-sigchild (собственный обработчик сигнала SIGCHLD)
- -enable-sysvsem (поддержка семафоров System V)
- -enable-sysvshm (поддержка shared memory в System V)
- -enable-trans-sid (поддержка идентификатора сессии)
- -with-cdb[=директория]
- -with-config-file-path=путь (где искать php.ini - обычно в /usr/local/lib)
- -with-exec-dir[=директория] (в режиме безопасного выполнения разрешать запуск программ
только из этой директории; по умолчанию - /usr/local/php/bin)
- -with-imap[=директория]
- -with-java[=директория]
- -with-mm[=директория] (использовать mm для хранения сессий)
- -with-mod_charset (специально для RusApache)
- -with-readline[=директория]
- -with-regex={system | apache | php }
- -with-servlet[=директория]
- -with-zlib-dir[=директория]
- -with-zlib[=директория]
- -enable-ftp
- -with-openssl[=директория]
- -with-snmp[=директория]
- -enable-ucd-snmp-hack
- -enable-sockets
- -enable-magic-quotes
- -disable-short-tags (не обрабатывать короткие теги - <? ... ?>
- -with-apache[=директория] (по умолчанию - /usr/local/etc/httpd)
- -with-aspell[=директория]
- -with-gettext
- -with-pspell
- -with-recode[=директория]
- -with-dom[=директория] (поддержка DOM при разборке XML)
- -enable-sablot-errors-descriptive (длинные сообщения об ошибках XML Sablotron)
- -with-sablot[=директрия] (поддержка XML Sablotron)
- -disable-xml
-
Если PHP собран как модуль к apache, то читается только при запуске httpd (не при reload), но можно
изменять настройки через httpd.conf и .htaccess. Для PHP3 любую настройку из php3.ini
можно поместить в apache, предварив ее "php3_". Для PHP4 можно только установить значения
переменных с помощью директив:
- php_value имя значение
- php_flag имя on|off
- php_admin_value имя значение (нельзя использовать в .htaccess)
- php_admin_flag имя on|off
Узнать значения переменных можно с помощью функций phpinfo() и get_cfg_var().
Директивы
- Общие
- allow_url_fopen boolean (разрешить доступ к объектам по URL (ftp, http, zlib) как к файлам)
- asp_tags boolean (использовать для PHP тэги как в ASP - <% и %>)
- auto_append_file строка (после разбора основного скрипта - если не было exit() - обрабатывать указанный файл, с учетом include_file; специальное значение none)
- auto_prepend_file строка (аналогично, но до основного скрипта)
- cgi_ext строка (?)
- display_errors boolean (выводить ошибки в html или нет)
- doc_root строка (если не пусто, то в safe mode файлы вне этой директории не обслуживаются)
- engine boolean (позволяет отключать PHP для виртуальных сайтов или отдельных директорий)
- error_log имя-файла (куда выдавать сообщения об ошибках, можно также на syslog)
- error_reporting уровень-ошибок (битовая строка:
- 1 - ошибки
- 2 - предупреждения
- 4 - ошибки разбора
- 8 - предупреждения по стилю
- open_basedir строка (открываются только файлы из данной директории; символьные ссылки тоже
обрабатываются; директория, в которой лежит скрипт обозначается "."; несколько директорий
разделяются двоеточием)
- gpc_order строка(порядок разборки переменных GET/POST/COOKIE; по умолчанию - GPC)
- ignore_user_abort On|Off (если установить Off, то выполнение скрипта будет прервано сразу
после попытки записать в соединение, прерванное клиентом; есть функция ignore_user_abort())
- include_path строка (список директорий - разделяемых двоеточием, где будут искаться
файлы для include(), require() и fopen_with_path())
- isapi_ext строка (?)
- log_errors boolean (будет ли сообщение об ошибке выводиться в журнал сервера)
- magic_quotes_gpc boolean (если on, то все апострофы, кавычки, обратные косые и NUL
при обработке Get/Post/Cookie будут защищаться обратным слешом автоматически)
- magic_quotes_runtime boolean (все апострофы в строках, взятых из внешних источноков -
текстовые файлы, базы данных - будут защищаться обратным слешом)
- max_execution_time секунд (работа скрипта будет прервана через указанное время)
- memory_limit число (максимальный размер памяти для скрипта - в чем?)
- nsapi_ext строка (?)
- register_globals boolean (регистрировать ли Env/Get/Post/Cookie/Server переменные как
глобальные; при использовании track_var их можно будет достать и без глобальной регистрации)
- short_open_tag boolean (использовать ли короткую форму тегов - <? и ?> - вместо полной -
<?php и ?>
- sql.safe_mode boolen (?)
- track_errors boolean (последняя ошибка всегда будет доступна в $php_errormsg)
- track_vars boolean (Env/Get/Post/Cookie/Server переменные будут доступны в глобальных
ассоциативных массивах $HTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS и
$HTTP_SERVER_VARS; в PHP 4.0.3 всегда включен)
- upload_tmp_dir строка (временная директрия для загрузки файлов; php процесс должен иметь
права на запись
- user_dir строка (директория, используемая в домашней директории для PHP файлов; например,
public_html; ?)
- warn_plus_overloading boolean (выдавать предупреждения при попытке складывать строки)
- почта
- SMTP строка (имя или адрес SMTP сервера - localhost)
- sendmail_from строка (что вставлять в поле From:)
- sendmail_path строка (где находится sendmail и ключи)
- safe mode
- safe_mode boolean
- safe_mode_exec_dir строка (в safe mode функция system() и аналогичные будут отказываться
испонять программы вне данной директории)
- Debugger (?)
- debugger.host строка
- debugger.port строка
- debugger.enabled boolean
- загрузка расширений
- enable_dl boolean (испоьзование dl(), для safe mode выключить)
- extension_dir строка (откуда их брать)
- extension строка (какие расширения брать при загрузке PHP)
- MySQL
- mysql.allow_persistent boolean
- mysql.default_host строка
- mysql.default_user строка
- mysql.default_password строка
- mysql.max_persistent integer (макс. число постоянных соединений на процесс)
- mysql.max_links integer (макс. число соединений на процесс, включая постоянные)
- mSQL
- Postgres
- SESAM
- Sybase
- Sybase-CT
- Informix
- bcmath.scale integer (число десятичных цифр для bc-функций)
- browscap строка (имя файла, см. get_browser(); взять browscap.ini на www.php.net)
- Unified ODBC
Безопасность
Утилиты администрирования
Интерфейс с MySQL
Процедуры
- добавлена поддержка KOI8-R, CP866 и CP1251 в htmlentities()
- добавлена функция memory_get_usage() (требуется --enable-memory-limit в ./configure)
- добавлена функция zlib_get_coding_type()
- добавлена функция session_regenerate_id()
- добавлена директива disable_classes в php.ini
- Apache 2.0 SAPI модуль (sapi/apache2handler)
- модуль GD 2.0.23 поставляется вместе с PHP
- добавлена функция apache_get_version()
- переписана система сборки
- добавлена функция exif_imagetype()
- добавлены функции mysql_list_processes(), mysql_stat(), mysql_info(), mysql_ping(), mysql_real_escape_string(), mysql_character_set_name(), mysql_thread_id()
- директива zlib.output_compression_level в php.ini
- директивы pgsql.ignore_notice и pgsql.log_notice в php.ini
- директивы log_errors_max_len, ignore_repeated_errors и ignore_repeated_source в php.ini
- директивы в php.ini для обработки Unicode в EXIF
- добавлены функции output_add_rewrite_var(), output_remove_rewrite_var()
- добавлена функция domxml_doc_set_root(), domxml_node_namespace_uri()
- добавлена функция domxml_doc_validate()
- domxml приведен в соответсвие со спецификациями W3C
- добавлена функция glob()
- функция getallheaders() переименована в apache_request_headers(),
добавлена функция apache_response_headers()
- добавлена функция pctnl_alarm()
- добавлена опция --with-mysql-sock в ./configure
- модуль GD 2.0.1 поставляется вместе с PHP, gd_info()
- функция header() может изменять код возврата HTTP
- добавлена функция image_type_to_mime_type()
- добавлены флаги в mysql_connect() и mysql_pconnect() для SSL и сжатия
- директива mysql.connect_timeout в php.ini
- значительно переработаны функции работы с FTP (resume и т.д.)
- declare() в глобальном режиме
- добавлена функция ob_list_handlers(), ob_get_clean(), ob_get_flush()
- дальнейшая поддержка многобайтовых символов (mb_convert_case(), mb_regex_set_options(), mb_strtolower(), mb_strtoupper() и др.)
- добавлены функции xslt_backend_version(), xslt_backend_name()
- предупреждения для "устаревших" функций mysql_create_db(), mysql_drop_db(), mysql_escape_string()
- добавлена функция file_get_contents()
- директива default_socket_timeout в php.ini
- директива auto_detect_line_endings в php.ini
- добавлена функция stream_select(), stream_filter_prepend(), stream_filter_append(), stream_context_create(), stream_context_set_params(), stream_context_set_option()
- fopen("php://output", "wb")
- php://input - это "сырые" данные POST
- переименованы
- socket_set_timeout() -> stream_set_timeout()
- socket_set_blocking() -> stream_set_blocking()
- set_file_buffer() -> stream_set_write_buffer()
- socket_get_status() -> stream_get_meta_data()
- введено понятие потоков (stream), что позволяет в качестве имён файлов использовать
URL вида "compress.zlib://", "compress.bzip2://" в fopen(), copy() и fsockopen();
потоки в память; определяемые потоки; если PHP собран с OpenSSL напрямую,
то можно использовать "https://", "ftps://", "ssl://", "tls://"
- добавлена функция ftp_ssl_connect()
- добавлена функция getopt()
- добавлены функции array_diff_assoc(), array_intersect_assoc()
- для Apache 2: apache_response_headers(), apache_note(), apache_getenv(), apache_setenv(), php_apache_sapi_getenv(), php_apache_sapi_get_stat()
- добавлена опция --with-config-file-scan-dir в ./configure
- добавлены функции xslt_set_object, xslt_setopt
- добавлены шаблоны %e и %E в printf
- добавлена функция str_word_count()
- усовершенствовано расширение dba (в т.ч. добавлена работа с плоскими файлами,
что позволило объявить устаревшим расширение db)
- добавлены функции sha1() и sha1_file()
- расширения vpopmail и cybermut перенесены в PECL
- удалены расширения aspell, ccvs, cybercash, icap, fastcgi, fhttpd
- добавлена функция ini_get_all()
- поддержка 'int', 'bool', 'float' and 'null' в settype()
- добавлена функция apache_setenv()
- mcrypt_generic_end() переименована в mcrypt_generic_deinit()
- добавлена функция pcntl_exec()
- добавлена функция array_change_key_case()
- добавлена функция ldap_start_tls(), ldap_sort()
- user-space object overloading extension
- добавлена функция array_fill()
- добавлена функция session_cache_expire()
- добавлена функция array_chunk()
- добавлена функция bind_textdomain_codeset()
- функция key_exists() переименована в array_key_exists()
- добавлена функция md5_file()
- добавлены функции ob_flush(), ob_clean(), ob_get_level(), ob_get_status()
- добавлена функция var_export()
- добавлен флаг PREG_GREP_INVERT к функции preg_grep()
- добавлены функции is_finite(), is_infinite() and is_nan()
- добавлена функция mb_get_info() и обработка многобайтовых символах в строчных функциях и regexp
- count() может считать рекурсивно
- добавлена функция xpath_register_ns()
- добавлены функции domxml_dump_file, domxml_node_get_content(), domxml_dump_node()
- добавлены флаги EXTR_IF_EXISTS и EXTR_PREFIX_IF_EXISTS к функции extract()
- добавлена функция is_a()
- директива safe_mode_include_dir в php.ini воспринимает список директорий через ':' или ';'
- расширение satellite стало частью PEAR
- добавлено расширение tokenizer
- добавлены функции aggregation_*()
- расширение Velocis переименовано в Birdstep
- добавлены функции exif_tagname(), exif_thumbnail()
- функция read_exif_data() переименована в exif_read_data()
- экспериментальная поддержка Apache 2
- директива register_globals в php.ini по умолчанию - off
- большие изменения в расширении sockets
- большие изменения в расширении domxml
- --enable-memory-limit позволяет регистрировать в журнале Apache пиковое потребление памяти
- diskfreespace() переименована в disk_free_space()
- переименованы функции расширения sockets
- модификатор u в printf/sprintf (unsigned long)
- расширение mailparse для обработки MIME
- добавлена функция get_defined_constants()
- добавлен флаг W для функции date()
- расширение Zip
- добавлена функция nl_langinfo()
- добавлена функция getmygid()
- директива safe_mode_gid в php.ini
- добавлена функция fdf_set_encoding()
- директива always_populate_raw_post_data в php.ini
- расширение Cyrus-IMAP
- добавлены функции vprintf(), vsprintf()
- переменные $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST вместо $HTTP_*_VARS
- добавлена функция import_request_variables()
- добавлен ключ --version в php-config
- добавлена функция version_compare()
- расширения теперь имеют номера версий
- расширение xmlrpc-epi
- поддержка MySQL 4.0
- расширение sablotron заменено расширением XSLT
- preg_replace() /F заменена на preg_replace_callback()
- директива arg_separator.input в php.ini позволяет указать разделители аргументов в URI
- добавлена функция array_reduce()
- директива zlib.output_compression в php.ini (вместо модуля?)
- кеширование с помощью PEAR/Cache
- добавлена функция array_search()
- добавлена функция chroot()
- добавлены функции mysql_get_client_info(), mysql_get_server_info(), mysql_get_proto_info(), and mysql_get_host_info()
- добавлено расширение mnoGoSearch
- добавлена функция xslt_set_scheme_handler(), xslt_set_base()
- добавлены функции pg_lolseek(), pg_lotell()
- добавлены функции localeconv(), strcoll()
- добавлены функции odbc_error(), odbc_errormsg()
- fopen() теперь обрабатывает перенаправления URL
- добавлены функции ldap_rename(), ldap_parse_result(), ldap_first_reference(), ldap_next_reference(), ldap_parse_reference()
- добавлена функция iconv()
- добавлено расширение cracklib
- добавлена функция call_user_method_array
- добавлена функция mysql_unbuffered_query()
- добавлена функция array_filter()
- добавлена функция array_map()
- добавлен модуль dbx
- S/MIME sign/verify encrypt/decrypt для расширения openssl
- модуль GD доведён до версии 2.0.1 и множество дополнительных функций
- добавлена функция key_exists()
- добавлена функция pg_last_notice()
- опция --with-layout для ./configure
- добавлена функция is_callable()
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru