Настройка faq по php


Содержание

Хочу изучать PHP и Mysql. С чего начать?

Информация для начинающих изучать PHP и MySQL
Для тех, кто хочет изучать PHP, можно посоветовать великолепный «Самоучитель PHP» с сайта PHP5.RU
Курс находится в процессе написания, но уже сейчас ссылки на отдельные уроки из него стоят в различных разделах этого FAQ. И, поверьте — оно стоит того.
Не могу не порекомендовать замечательный материал Вадима Ткаченко АКА Bizon-а «Вступление в PHP и MySQL». Он даже издавался отдельной книгой, а сейчас — исправленный и дополненный — размещается на сайте
«PHP в деталях». Этот ресурс стоит особняком. В отличие от предыдущих, рекомендовать прочесть его целиком может только садист — там слишком много информации. но в этом и его прелесть. Это неисчерпаемый ресурс информации по PHP. Единственное замечание — обращайте внимание на дату написания статьи. Не стоит особо доверять тем, что написаны до 2003 года.
Ну, и, конечно же — этот сайт, http://phpfaq.ru
Если вы еще не прочли его целиком — обязательно сделайте это. Здесь перечислены проблемы, с которыми рано или поздно столкнется КАЖДЫЙ, кто пишет на PHP.

При установке MySQL выбрать Standard configuration, на следующем экране нажать Next, на следующем — задать пароль или снять галочку «Modify security settings», если хотите оставить его пустым.
Для проверки запустите консоль Mysql: Пуск — Выполнить и в появившуюся строку скопировать
«C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe»
или
«C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe» -uroot -pPASSWORD
если консоль запустилась — все работает. Наберите exit для выхода и приступайте к конфигурированию поддержки mysql в PHP.
Для этого, если вы не сделали этого раньше, возьмите файл c:\php\php.ini-development и скопируйте под именем php.ini в каталог windows. Затем отредактируйте его, убрав точку с запятой в начале строки
;extension=php_mysql.dll
и отредактировав параметр extension_dir:
extension_dir = «c:\php\ext\»
заодно можно сразу исправить
short_open_tag = On
чтобы работали старые скрипты и удобные шаблоны
и не забудьте после этого перезапустить Апач, как это было описано выше.
Теперь вы можете использовать mysql в своих php-скриптах.

Те, для кого эта инструкция слишком сложна, могут попробовать установить готовый комплект Денвер-2.
В него входит сразу все, что нужно, и еще много ненужного. А главное — работает все само.
Еще одно достоинство Денвера в том, что объем базового комплекта в 10 раз меньше полных версий — всего 4 мегабайта. А так же то, что его автор пишет интересные книжки по PHP.

Так же, всем любознательным рекомендуется ВЕСЬМА толковая статья Установка и настройка Apache+PHP
с сайта PHP5.RU. И, конечно же — разделы официальной документации, посвященные установке соответствующих программ.

PHP представлен и в русскоязычном сегменте Livejournal
В сообществах ru_php и ru_mysql всегда найдутся профессионалы, кототорые помогут с любой проблемой. Только не забудьте сначала прочитать правила сообщества!

Задавая вопрос на форуме, помните:
Что, скорее всего, с ним уже сталкивалась тыща человек. И подробные ответы можно найти в поиске. Если же, все-таки, вопрос приходится задавать — то описывайте как можно подробнее (только своими словами, а не кодом!), что вы делали, что хотели получить и что получилось в результате, а так же точно копируйте сообщения об ошибках.

Сайты для начинающих.
Ранее здесь были размещены ссылки на различные сайты от начинающих для начинающих.
К сожалению, и так-то не блиставшие качеством материала, они давно заброшены своими авторами и окончательно потеряли актуальность.
Все, что есть лучшего по теме PHP, перечислено вверху страницы.
Если вы знаете хороший сайт — напишите о нем в разделе «Обратная связь».

Plesk Documentation and Help Portal

  • Administrator’s Guide, Plesk 12.0
  • About Plesk
  • About Plesk Users

Plesk предоставляет полную поддержку языка PHP, включая готовую поддержку множества версий PHP и типов обработчиков. В этом разделе объясняется, как клиенты Plesk могут управлять настройками PHP на доменах и субдоменах через панель клиента.

Управление PHP на уровне домена состоит из трех аспектов:

  • Выбор версии PHP.
  • Выбор типа обработчика PHP.
  • Дополнительные настройки PHP.

Примечание: Возможно, вам будет доступно изменение лишь части описанных ниже настроек, или они не будут доступны вовсе, в зависимости от настроек вашей подписки. Чтобы изменить недоступные вам настройки PHP, обратитесь к хостинг-провайдеру.

Выбор версии PHP

Plesk поддерживает множество версий PHP. Чтобы выбрать версию PHP для домена или субдомена, перейдите на страницу Сайты и домены > Настройки PHP и выберите нужную версию PHP в меню:

Если нужной версии PHP в меню нет, обратитесь к своему хостинг-провайдеру.

Обратите внимание, что разные версии PHP не на 100% совместимы. Сайт, написанный на PHP 5.3, может работать неверно, если вы установите версию PHP 5.4 для домена. Если вы сомневаетесь в выборе версии PHP, используйте настройки по умолчанию или последнюю доступную версию. Если ваш сайт отображается некорректно, переключитесь на другую версию PHP.

Выбор типа обработчика PHP

Plesk поддерживает множество различных обработчиков PHP. Чтобы выбрать тип обработчика PHP для домена или субдомена, перейдите на страницу Сайты и домены > Настройки PHP и выберите нужный тип обработчика PHP в меню:

Если вы сомневаетесь в выборе типа обработчика PHP, читайте о различных типах обработчиков PHP здесь.

Дополнительные настройки

Кроме версии и типа обработчика PHP существует ряд настроек PHP, которые вы можете изменять на странице Сайты и домены > Настройки PHP. Эти настройки в основном имеют отношение к производительности и безопасности, но некоторые из них могут повлиять и на функционирование сайта. Нажмите значок рядом с настройкой, чтобы узнать о ней больше.

Если ваш домен использует один из обработчиков PHP типа «Приложение FPM», вы можете настроить дополнительные параметры PHP-FPM. Они могут быть полезны для регулирования поведения PHP с целью оптимизации производительности сайта.

Значения этих настроек по умолчанию должны быть оптимальны для большинства сайтов. Имейте в виду, что изменение этих настроек может повлиять на производительность вашего сайта или даже привести к его некорректному отображению. Рекомендуем вносить изменения только тогда, когда вы уверены в их необходимости, или использовать значения по умолчанию для всех дополнительных настроек. Если вы изменили настройки PHP и ваш сайт стал работать медленно или перестал загружаться, верните все настройки PHP к значениям по умолчанию.

Включение ускорения работы PHP

Вы можете включить для своего сайта ускорение работы PHP, также известное как модуль кэширования opcode, если это разрешено хостинг-провайдером. Если ваш сайт написан на PHP, включение модуля кэширования opcode может ускорить его работу вдвое или больше. Чтобы включить ускорение работы PHP, откройте страницу Сайты и домены > Настройки PHP и установите значение « on » для опции opcache.enable .

Просмотр настроек PHP

Для просмотра текущих настроек PHP домена, включая заданные на уровне сервера, нажмите Просмотр страницы phpinfo().

Наследование настроек PHP

Домены, принадлежащие подписке, наследуют настройки PHP, определенные на уровне подписки. Субдомены наследуют настройки PHP, определенные на уровне их родительского домена. Если ваша подписка обладает соответствующими правами, вы можете изменять настройки PHP для каждого домена и субдомена независимо друг от друга.

PHPClub Cookbook — Русский PHP FAQ

PHPClub, faq@phpclub.net

ЗАДАВАЙТЕ ЛЮБЫЕ ВОПРОСЫ СОГЛАСНО ТЕМЕ!
Все авторские права принадлежат «Клубу разработчиков PHP» (PHPCLub) и Dmitry Borodin http://php.spb.ru а также всем авторам участвующим в разработке материалов этого документа. Любое использование этих материалов в коммерческих целях не допустимо без согласования. При копировании оставляйте пожалуйста ссылки на нас. :)
http://www.phpclub.net
http://php.spb.ru
Все вопросы пишите на faq@phpclub.net

Теперь оттестируем нашу функцию:

У Вас есть форма такого типа:

После нажатия на «ok» данные передаются скрипту page.php. Здесь выполняем проверку на предмет, был ли отмечен чекбокс:

0) // здесь «checkme» — имя чекбокса
<

. // если чекбокс отмечен, выполняем какие-то действия

Решение от Roman Korobeinikov

Есть еще один способ сделать это, как мне кажется, более простой:
в форме _перед_ тегом поместить тег
с тем же самым значением параметра ‘name’:

Теперь если checkbox взведен, в переменной $checkme передастся «1»,
в противном случае «0».

13.6 Как загрузить файл на сервер через броузер (сделать upload) ?

Немного теории. Это нужно, для понимания что и как работает.

— вы в броузере указываете файл для загрузки на сервер;
— броузер передает выбранный файл на сервер;
— PHP-интерпретатор на сервере записывает полученный файл во временную директорию. Причем, имя, под которым записывается файл, может быть абсолютно случайным. Это только под Windows PHP пишет файл с именами подобными PHP2.
Нам, в принципе, вовсе не обязательно знать под каким именно именем загруженный файл хранится во временной директории. Почему не надо знать? Потому что, вполне достаточно того, что PHP «знает». И, в любом случае, после завершения работы скрипта, этот файл удаляется.
— Вы говорите PHP, что загруженный файл надо скопировать из временной директории туда, куда хотите.

На этом, сам процесс «аплоада» можно считать завершенным.

Что вы потом сделаете с этим файлом, вопрос другой.
И еще: все трудности под Win32 связанные с «непонимаем» системой конструкции вида «\\PHP2» (кто сталкивался, поймет) кроются в файле php.ini (php3.ini) Лично у меня, это выглядит так (получено опытным путем):
upload_tmp_dir = «f:/tmp/» — php3.ini
upload_tmp_dir = «f:\tmp» — php.ini
С такими настройками, никаких проблем я не замечал. Попробуйте.

Теперь про ограничение размера загружаемого файла. Конечно, и в php.ini есть параметр upload_max_filesize, можно ограничить и размер и тип указанием соответствующих параметров в теге FORM, но, в любом из этих случаев мы получим ошибку, которую не сможем обработать. Что не здорово. Поэтому, удобней ограничивать размер в самом скрипте.
НО: РАЗМЕР файла невозможно узнать до ПОЛНОЙ загрузки файла на сервер. Никаким способом.

Также, при uploade, до ЗАВЕРШЕНИЯ загрузки, файл хранится в памяти, потом пишется во временную директорию, и, еще раз напомню, сразу удаляется из temp по завершению работы скрипта. Вообщем, с помощью PHP не получится сделать индикатор загрузки файлов.

Настройка PHP, выбор версии

В данном можно выбрать версию PHP, настроить PHP и модули.

Как посмотреть конфигурацию PHP?

Как изменить версию PHP и включить модули?

Как настроить параметры PHP?

ПОЧЕМУ У НАС ВЫГОДНО?

Домен и перенос сайта в подарок

Удобная панель хостинга Cpanel

Работаем c 2007 года

Поддержка PHP 5.6-7.3

Поможем установить сайт

ЭТО ИНТЕРЕСНО

Дешевый хостинг для сайта

Уже более 13 лет компания ХостингРУ.НЕТ успешно предоставляет услуги дешёвого хостинга. За это время тысячи клиентов выбрали наш хостинг сайтов. Наши сервера обеспечивают быструю и надёжную работу сайтов и подходят под любые CMS. Поддержка: PHP, MySQL,SQLite Cron,Apache,Nginx, SSL имеется на всех тарифных планах дешевого хостинга. Хотите создать сайт-визитку,блог,форум или интернет-магазин? Какая бы не была цель, вы без проблем сможете найти у нас подходящий тарифный план.

Купить хостинг

Покупая у нас хостинг вы получаете тарифы всё включено, на которых будут работать большинство известных CMS. А автоинстолятор скриптов позволяет устанавливать CMS прямо из cpanel — это настолько просто что справится даже новичок впервые создающий сайт. Для установки доступно более 200 CMS, форумов,фотогалерей,социальных сетей, в числе которых есть такие известные как Joomla, MODx,e107,Typo3, WordPress (WP),CMS Made Simple, Drupal, phpbb, mybb, SMF. На серверах используется http-сервер nginx, гарантирующий стабильную работу сайта при пиковых нагрузках!

Недорогой хостинг

Мы предоставляем услуги хостинга по цене от 47 рублей в месяц. Скидки до 15%. Перенесём БЕСПЛАТНО ваш сайт к нам от другого хостера. Также мы можем предоставить бесплатный домен вида *.mysit.ru.

Качественный хостинг

Сервера нашего хостинга расположены в крупном дата-центре России и подключённого к качественным каналам связи, что обеспечивает стабильное и быстрое соединение , Это позволяет справляться с пиками трафика и DoS-атаками. Надёжное оборудование и каналы связи обеспечивают высокий uptime 99%.

Хостинг дешево

Вы спросите, почему мы продаем хостинг дешево? Все очень просто! Мы не делаем 200-500% накрутки на свои услуги. Наш PHP хостинг предоставляет возможность выбрать версию PHP и настроить модули индивидуально для каждого аккаунта. Среди доступных есть такие как gd, mbstring, intl, json, mcrypt, imagick, tidy и много других. Также поддерживается запуск скриптов защищённых при помощи ionCube и Zend Gu

Все о файле php.ini

Где находится php.ini?

Местонахождение файла php.ini зависит от операционной системы, на которой работает сервер хостинг-провайдера. Чтобы узнать где он находится выполняем 4 простых шага:

    Создаем php-файл (имя может быть любое, но мы берем для примера myphpinfo.php), и добавляем в него следующие строки:

Как настроить php.ini?

Файл php.ini имеет такие правила синтаксиса «директива = значение». Если вы хотите добавлять комментарии (например, в которых указываете на что влияет данная настройка), то делайте после точки с запятой (все, что идет после этого знака не учитывается как команда). Вот пример:

max_execution_time = 40 ; Максимальное кол-во секунд исполнения скрипта

Далее рассматриваем основные настройки, которые можно сделать в файле php.ini:

Общие настройки

PHPengine = On ; Работа PHP-скриптов включена.

short_open_tag = On ; Разрешает упрощенно обрамлять PHP-код тагами

Precision = 12 ; Указывает сколько цифр будет после запятой, у чисел с плавающей точкой.

output_buffering = 4096 ; Автоматически будет включена буферизация вывода, с размером буфера указанным после «равно».

safe_mode = On ; Безопасный режим.

safe_mode_allowed_env_vars = PHP_ ; Разрешает пользователю работать только с переменными окружения, которые начинаются с PHP_. Если эта директива будет пустой (не будет иметь значения), то пользователи смогут изменять любые переменные окружения. Это может очень плохо сказаться на защите сценариев.

safe_mode_protected_env_vars = LD_LIBRARY_PATH ; Запрещает изменять переменные, которые перечисляются через запятую.

disable_functions = ; После знака «равно» нужно через запятую записать функции, которые вы хотите отключить (обычно это делается для безопасности)

disable_ нужно через запятую записать классы, вызов которых вы хотите запретить (обычно это делается для безопасности)

Илон Маск рекомендует:  Что такое код swfsprite &#62;nextframe

Ограничение ресурсов

max_execution_time = 40 ; Максимальное время на выполнение скрипта (в секундах)

max_input_time = 40 ; Максимальное время в секундах, которое дается скрипту может на обработку данных, которые загружаются.

memory_limit = 16M ; Максимум памяти, которые выделяется для работы одного скрипта

Обработка ошибок и журналы

error_reporting = E_ALL | E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE ; Указывает перечень ошибок, которые можно выводить.

display_errors = On; Разрешает выводить ошибки прямо в браузер (часто используют для удобства отладки).

display_startup_errors = On ; Ошибки появляющиеся при страрте PHP разрешено показывать.

log_errors = On ; Ошибки разрешено записывать в файл журнала.

log_errors_max_len = 1024 ; Максимальное число символов, которое может составлять длинна журнала.

track_errors = On ; Последние сообщение об ошибки сохранится в переменную $php_errormsg

html_errors = On ; Разрешен вывод сообщений об ошибках в HTML.

error_log = filename ; Задается имя журнала ошибок.

Обработка данных

variables_order = «EGPCS» ; Устанавливает порядок, в котором PHP будет регистрировать перменные (E — встроенные переменные, G — GET переменные, P — POST переменные, C — Cookies, S — сессии). Если убрать любую из букв, то работа соответствующих переменных будет блокироваться.

register_globals = On ; Включает возможность для обращения к переменным, которые поступают через GET/POST/Cookie/сессии, как к обычным переменным (например «$имяпеременной»).

register_argc_argv = On ; Разрешено создавать переменные $argv и $argc на основе информации из GET-метода.

post_max_size = 8M ; Устанавливает максимальный объём данных, который может быть принят.

magic_quotes_gpc = On ; Включает автоматическую обработку кавычек, которые поступают через POST/GET/Cookie.

auto_prepend_file = ; Содержимое файлов, указанных в этих директивах, PHP должен обрабатывать соответственно ДО выполнения сценария
auto_append_file = ; Содержимое файлов, указанных в этих директивах, PHP должен обрабатывать соответственно ПОСЛЕ выполнения сценария.

default_mimetype = «text/html» ; Задает кодировку для Content-type. По умолчанию будет использовано text/html без указания кодировки

doc_root = ; Задается корневая папка для PHP-сценариев.

extension_dir = «./» ; Задается папка, в которой будут хранится динамически загружаемые расширения.

Загрузка файлов

file_uploads = On ; Загрузка файлов на сервер разрешена.

upload_tmp_dir = ; Временная директория для файлов, которые загружаются.

upload_max_filesize = 2M ; Устанавливает максимальный размер файла, который можно загрузить.

Работа с сокетами

user_agent=»PHP» ; Задается переменная USER_AGENT, когда происходит подключение через сокет.

default_socket_timeout = 30 ; Максимальное время на прослушивание сокета (секунды).

Сессии

session.save_handler = files ; Уазывает, что информацию о сессиях нужно хранить в файлах

session.save_path = /tmp ; После знака «равно» нужно указать путь к папке в которой будет храниться информация о сессиях (важно чтобы она папка уже существовала)


session.use_cookies = 1 ; Разрешает использование cookie в сессиях

session.name = PHPSESSID ; Указывает на исользование в качестве имени сессии и сессионной cookie — ID сессии

session.auto_start = 0 ; Запрещает инициализировать сессии при начале соединения

session.cookie_lifetime = 0 ; Время жизни сессии («0» — значит, что сессия живет, пока окно браузера не будет закрыто)

Динамические расширения

extension=modulename.extension ; Можно использовать чтобы загружать внешние модули. Для Windows-систем, обычно пишут — extension=msql.dll, а для
UNIX — extension=msql.so

Работа с модулями MySQL

mysql.allow_persistent = On ; Разрешает устойчивые MySQL-соединения.

mysql.max_persistent = -1 ; Задает сколько максимум может быть устойчивых MySQL-соединений. Если указать -1, то это будет значить, что ограничений нет.

mysql.max_links = -1 ; Задает сколько максимум может быть устойчивых MySQL-соединений, и неустойчивых ODBC-соединений. Если указать -1, то это будет значить, что ограничений нет.

mysql.default_port = ; Порт для функции mysql_connect.

mysql.default_socket = ; Имя сокета для локальных соединений MySQL.

mysql.default_host = ; Имя хоста для функции mysql_connect.

mysql.default_user = ; Имя пользователя.

Если вы создали собственный файл php.ini и поместили его в папке сайта

В таком случае, в целях безопасности нужно заблокировать доступ к нему для всех, кроме вас. Для этого необходимо в файле .htaccess прописать такой код:

Но будьте внимательны, т.к. при данных настройках, все директивы (php_value, php_flag и т.д.) касающиеся настроек php через файл .htaccess перестанут работать (будет выдаваться ошибка 500 Internal Server Error).

Настройка файла php.ini

PHP — это один из самых популярных языков программирования для создания сайтов и веб-приложений. На нем разработано множество готовых систем управления контентом для блогов, сайтов фирм или даже интернет-магазинов. Несмотря на то что у этого языка есть свои недостатки, он достаточно прост в освоении и поэтому очень часто используется для разработки новых сайтов.

Интерпретатор php может поставляться в виде модуля для Apache, выполнять скрипты из командной строки или в виде отдельного сервиса php-fpm. Эти сервисы отличаются своими возможностями, и предназначением, но для любого вида интерпретатора нужно задать базовые настройки, например, рабочая папка, включенные расширения, отображение ошибок и так далее. Все эти настройки задаются через файл php.ini. В этой инструкции мы рассмотрим как выполняется настройка файла php.ini в операционных системах Linux, хотя все информация подойдет и для Windows.

Если у вас еще не установлен интерпретатор языка программирования php, то вы можете ознакомиться со статьей установка lamp в Ubuntu 16.04.

Расположение и синтаксис php.ini

Для каждой версии интерпретатора конфигурационный файл php.ini находится в отдельной папке. Но все конфигурационные файлы находятся в папке /etc/php, например, /etc/php5:

Папка conf.d содержит общие настройки для различных расширений и модулей, они не будут нас сейчас интересовать. Более интересны следующие три папки — apache, cli и fpm. В них содержатся конфигурационные файлы php.ini для каждого из этих интерпретаторов.

Если вы собираетесь использовать несколько из этих интерпретаторов, то вам придется указывать настройки для каждого из них отдельно. Вы можете убедиться, что в каждой из папок лежит файл php.ini.

Что касается синтаксиса файла, то он разделен на секции, сначала идет секция настройки php, которая разделена на подсекции в зависимости от типа настроек, дальше идут секции настройки разных модулей. Синтаксис самих настроек очень прост, он соответствует привычному синтаксису ini файлов. Строка начинается с имени настройки, затем следует знак равно, а за ним значение:

имя_настройки = значение_параметра

Символами [] обозначается имя секции, например, [PHP], а символ ; означает комментарий, он и все символы после него не читаются интерпретатором. А теперь рассмотрим как выполняется настройка php.ini и переберем самые важные параметры.

Настройка файла php.ini

Для удобства ориентирования мы разобьем все параметры по категориях в зависимости от их назначения. Вам будет достаточно найти нужный параметр и изменить его значение. А теперь откройте файл настроек php, например, для модуля apache и перейдем к настройке. Чтобы избежать ошибок не добавляйте новые строки, а ищите уже существующие и изменяйте значения на нужные:

sudo gedit /etc/php5/apache/php.ini

Сначала идет немного информации о самом файле в виде комментариев, затем интересующие нас настройки.

Вывод ошибок в php

Настройка php 7 обычно начинается с конфигурации вывода ошибок. Все настройки вывода ошибок находятся в разделе Error handling and logging. По умолчанию вывод ошибок на экран во время выполнения скрипта отключен. Это сделано для того, чтобы пользователи не смогли увидеть ничего лишнего. Вместо этого, все ошибки записываются в лог файл. Если вы используете php на домашнем компьютере, то такие меры не нужны и вы можете сразу выводить все на экран:

Замените off на on. В php используются различные типы ошибок, например, критические, предупреждения, ошибки синтаксиса, с помощью строки error_reporting вы можете включить вывод только определенных типов ошибок:

Если нужно объединить несколько типов ошибок, то используйте символ &, а для отключения отображения поставьте перед типом знак

. Приведенный выше пример отображает все ошибки (E_ALL), кроме сообщений об устаревших функциях (E_DEPRECATED). Вы можете отключить все типы использовав 0:

Включите запись ошибок php в лог файл, если не выводите их на экран:

Чтобы не засорять лог однотипными сообщениями можно игнорировать повторяющиеся ошибки в пределах одного исполнения:

Ограничения ресурсов

Если бы скрипты php никак не ограничивались в ресурсах, то они запросто могли бы перегрузить сервер и не дать ему нормально работать. Поэтому, по умолчанию php устанавливает жесткие ограничения, но, возможно, вам нужно будет их немного ослабить.

По умолчанию максимальное время выполнения скрипта — 30 секунд, сделаем минуту:

Если указать 0, то скрипт может выполняться бесконечно. Вы также можете ограничить время, на протяжении которого скрипт будет загружать данные, 60 секунд:

Максимальное количество переменных в GET и POST:

Следующий параметр задает максимальное количество памяти, которую может использовать один скрипт во время своего выполнения, в мегабайтах:

Максимальный размер данных, передаваемых в POST запросе тоже ограничивается, размер по умолчанию — 8 Мегабайт:

Вы можете ограничить область действия php в системе с помощью опции openbase_dir, она указывает папку, выше которой скрипт не может получить доступ к файловой системе:

С помощью директив disable_functions и disable_classes вы можете отключить использование в скриптах определенных функций или классов, например, это может быть полезно для веб-хостингов. В этом примере мы отключаем использование функции ini_set, которая позволяет менять настройки php из скрипта:

Директории по умолчанию

Файл настройки php.ini позволяет указать пути в файловой системе по умолчанию для различных действий. Вы можете задать папки где система будет искать скрипты, если вы попытаетесь подключить их с помощью инструкции include:

Папка с модулями php:

Папка для записи временных файлов:

Загрузка файлов

Для того чтобы пользователи могли загружать свои файлы на сервер, например, фото, нужно включить эту функцию в php:

Максимальный размер загружаемого файла:

Максимальное количество файлов, которые может загрузить один скрипт:

Настройка php.ini практически завершена, нам остались лишь расширения.

Настройка расширений

Расширения позволяют очень сильно увеличить функциональность php. Например, благодаря расширениям вы можете использовать в своих скриптах базы данных mysql, postgresql, mysqli, sqlite, графическую библиотеку gd и многое другое. Все это включается в этом разделе.

Для включения расширения достаточно убрать комментарий перед строкой с его командой, например:

extension=php_mysql.so
extension=php_mbstring.so
extension=php_pgsql.so

Обратите внимание, что для windows расширение будет иметь формат dll, но для linux нужно использовать so. В следующих секциях идет настройка каждого из расширений, но мы их рассматривать не будем потому что они обычно не требуют настройки.

Выводы

В этой статье мы рассмотрели как выполняется настройка php на сервере или обычном компьютере для разработки веб-сайтов. Файл настроек php имеет довольно простую структуру и с ним довольно не сложно справиться. После завершения всех настроек и сохранения изменений не забудьте перезагрузить веб-сервер или сервис php-fpm.

Вообще говоря, php-fpm это отдельная тема, потому что там есть много дополнительных настроек, и, возможно, мы рассмотрим его в одной из следующих статей. Если у вас остались вопросы, спрашивайте в комментариях!

Установка

Этот раздел содержит общие вопросы по установке PHP. PHP доступен практически для любой ОС (за исключением, может быть, MacOS предшествующей OSX) и любого web сервера.

Для установки PHP следуйте инструкциям в Установка и настройка.

PHP — это клей. Клей, используемый для построения классных веб-приложений, склеивая дюжины сторонних библиотек и создавая впечатление одного согласованного целого, с помощью интуитивного и легко изучаемого языка. Гибкость и мощь PHP полагается на стабильность и устойчивость используемой платформы. Для склейки вместе ему необходимы работающая ОС, работающий веб-сервер и работающие сторонние библиотеки. Когда что-либо из этого перестает работать, PHP нужны способы определения проблем и их быстрого исправления. Если вы усложняете низлежащую систему, не разделяя полностью потоки выполнения, не выделяя раздельные сегменты памяти и не предоставляя «песочницу» для игры для каждого запроса, то в вашей PHP системе появятся слабые места.

Если вы хотите использовать потоковый MPM, взгляните на конфигурацию с FastCGI, где вы можете запускать PHP в своем собственном пространстве памяти.

Unix/Windows: Где должен находиться файл php.ini ?

На Unix по умолчанию он должен находиться в директории /usr/local/lib , определяемой как /lib . Большинство людей изменяют его во время компиляции с помощью опции —with-config-file-path Для примера, вы можете задать что-то типа:

На Windows по умолчанию php.ini находится в Windows директории. Если вы используете веб-сервер Apache, php.ini сначала ищется в директории, где был установлен Apache, например, c:\program files\apache group\apache . В этом случае на одной машине у вас могут быть разные файлы php.ini для разных версий Apache.

Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение ‘Document Contains No Data’ (Документ Не Содержит Данных)! Что происходит?

Вероятно, PHP падает по какой-то причине. Для того, чтобы убедиться в этом, просмотрите лог ошибок вашего сервера и затем попытайтесь воспроизвести проблему с помощью небольшого тестового примера. Если вы умеете пользоваться ‘gdb’, то добавьте трассировку к вашему сообщению об ошибке, это поможет разработчикам точно определить проблему. Если вы используете PHP как модуль Apache, попробуйте что-то типа:

Остановите ваши httpd процессы

Остановите ваши httpd процессы

> run -X -f /path/to/httpd.conf

Затем вызовите URL, на котором возникает проблема, из вашего браузера

> run -X -f /path/to/httpd.conf

Если вы получаете дамп, gdb должен сейчас же сообщить вам об этом

Вам необходимо включить трассировку в ваше сообщение об ошибке, которое должно быть отправлено с » http://bugs.php.net/

Если ваш скрипт использует функции регулярных выражений ( preg_match() и другие), то вам необходимо убедиться, что вы скомпилировали PHP и Apache с одним и тем же пакетом регулярных выражений. Это должно происходить автоматически для PHP и Apache 1.3.x

Unix: Я установил PHP с помощью RPMS, но Apache не обрабатывает PHP страницы! Что происходит?

Предполагается, что Apache и PHP оба были установлены из пакетов RPM. Вам требуется в вашем файле httpd.conf раскомментировать или добавить все или некоторые из следующих строк:

Unix: Я установил заплатку в Apache для расширений FrontPage и неожиданно PHP перестал работать. Неужели PHP не совместим с FrontPage расширениями для Apache?

Нет, PHP прекрасно работает с FrontPage расширениями. Проблема в том, что FrontPage заплатка изменяет некоторые важные для PHP структуры. Перекомпиляция PHP (с помощью ‘make clean ; make’) после установки FP заплатки должна решить эту проблему.

Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю пустой экран.

Сделайте просмотр исходника (‘view source’) в web браузере и, вероятно, вы увидите исходный код вашего PHP скрипта. Это означает, что web сервер не передал скрипт PHP для интерпретации. Что-то не так с конфигурацией сервера, проверьте конфигурацию сервера согласно установочным инструкциям PHP.

Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю ошибку сервера 500.

Что-то произошло, когда сервер пытался выполнить PHP. Чтобы увидеть более вразумительное сообщение об ошибке, используя командную строку, перейдите в директорию где находится исполняемый файл PHP ( php.exe на Windows) и запустите php -i. Если при запуске PHP возникли какие-либо проблемы, то появится соответствующее сообщение об ошибке, которое может дать вам понять что делать дальше. Если вы получаете экран, заполненный HTML кодом (вывод функции phpinfo() ), то PHP работает и ваша проблема возможно связана с конфигурацией вашего сервера, которую вам необходимо проверить.

Некоторые операционные системы: Я установил PHP без ошибок, но когда я пытаюсь запустить Apache, я получаю ошибки «undefined symbol» (неопределенный символ):

На самом деле это связано с клиентскими библиотеками MySQL и не имеет никакого отношения к PHP. Одним нужна опция —with-zlib , другим — нет. Это также описано в MySQL FAQ.

Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю ошибку:

Это сообщение об ошибке означает, что PHP не смог вывести абсолютно ничего. Чтобы увидеть более вразумительное сообщение об ошибке, используя командную строку, перейдите в директорию, где находится исполняемый файл PHP ( php.exe на Windows) и запустите php -i. Если при запуске PHP возникли какие-либо проблемы, то появится соответствующее сообщение об ошибке, которое может дать вам понять, что делать дальше. Если вы получаете экран, заполненый HTML кодом (вывод функции phpinfo() функции), то PHP работает.

Как только PHP заработает из командной строки, попытайтесь опять вызвать скрипт из браузера. Если он все также не работает, то причина может быть одной из следующих:

  • Анонимный пользователь Internet ISUR_ не имеет доступ к вашему PHP скрипту, php.exe , php4ts.dll , php.ini или любому загружаемому PHP расширению из за прав доступа, установленных на эти файлы.
  • Файл скрипта не существует (или, вероятно, не там где вы думаете он должен быть, относительно вашей корневой web директории). Заметьте, что для IIS вы можете поймать эту ошибку пометив ‘check file exists’ при настройке ассоциирования скриптов (script mappings) в Администраторе Internet Сервисов (Internet Services Manager). Если файл скрипта не существует, то сервер выдаст ошибку 404. Также есть дополнительное преимущество, заключающееся в том, что IIS будет выполнять необходимую вам аутентификацию, основываясь на NTLanMan правах доступа на ваш скрипт.

Windows: Я следовал всем инструкциям, но так и не смог заставить PHP и IIS работать вместе!

Убедитесь что все пользователи, кому необходимо запускать PHP скрипты, имеют право выполнять php.exe ! IIS использует анонимного пользователя, который добавлен во время установки IIS. Этот пользователь должен иметь права на php.exe . Также любому аутентифицированному пользователю будут нужны права на выполнение php.exe . И для IIS4 вам необходимо сказать ему, что PHP является скриптовой системой. Также вам захочется прочитать это.

Когда PHP запускается как CGI в IIS, PWS, OmniHTTPD или Xitami, я получаю следующую ошибку: Security Alert! PHP CGI cannot be accessed directly..

Вы должны установить директиву cgi.force_redirect в . По умолчанию она установлена в 1, поэтому убедитесь, что директива не закоммментирована (с ;). Как все директивы, она задается в php.ini

Илон Маск рекомендует:  Class - Ключевое слово Delphi

Так как значение по умолчанию 1, то очень важно быть уверенным на 100%, что был прочитан верный php.ini файл. Для подробностей читайте здесь.

Как узнать, что мой php.ini был найден и прочтен? Похоже, что мои изменения не были восприняты?

Чтобы убедиться, что PHP прочитал ваш php.ini , вызовите phpinfo() и недалеко от начала будет находиться строка, озаглавленная Configuration File (php.ini). Она скажет вам, где PHP ищет php.ini и был ли файл прочитан. Если указана только PATH директория, то файл не был прочитан и вы должны поместить ваш php.ini в эту директорию. Если php.ini включен в PATH , то он был прочитан.

Если php.ini был прочитан и вы запускаете PHP как модуль, то не забудьте перезапустить ваш web сервер после внесения изменений в php.ini .

Как на Windows добавить мою PHP директорию в PATH ?

На Windows NT+ и Windows Server 2000+:

Зайдите в Control Panel и откройте системную иконку (Start -> Settings -> Control Panel -> System, или просто Start -> Control Panel -> System for Windows XP/2003)

Перейдите в закладку Advanced

Нажмите кнопку ‘Environment Variables’

Смотрите в окошко ‘System Variables’

Найдите Path (возможно, вам придется сделать прокрутку, чтобы найти его)

Двойной щелчок на Path

Добавьте в конец вашу PHP директорию, поставив спереди ‘;’ (например ;C:\php)

На Windows 98/Me вам необходимо отредактировать файл autoexec.bat :

Откройте Notepad (Start -> Run и введите notepad)

Откройте файл C:\autoexec.bat

Найдите строку с PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;. и добавьте в конец строки: ;C:\php

Сохраните файл и перезапустите ваш компьютер

Замечание: Обязательно перезагрузитесь после указанных шагов для уверенности, что внесенные вами изменения были применены к PATH .

Прежде в руководстве по PHP рекомендовалось копировать файлы в системную директорию Windows, так как эта директория ( C:\Windows , C:\WINNT и т.п.) входит в системный PATH по умолчанию. Копирование файлов в системную директорию Windows давно уже противопоказано и может вызвать проблемы.

Как в Windows сделать файл php.ini доступным для PHP?

Для этого есть несколько путей. Если вы используете Apache, то читайте инструкции по его установке (Apache 1, Apache 2), в ином случае, вы должны установить переменную окружения PHPRC :

На Windows NT, 2000, XP и 2003:


Зайдите в Control Panel и откройте системную иконку (Start -> Settings -> Control Panel -> System, или просто Start -> Control Panel -> System for Windows XP/2003)

Перейдите в закладку Advanced

Нажмите кнопку ‘Environment Variables’

Посмотрите в окошко ‘System variables’

Щелкните на ‘New’ и введите ‘PHPRC’ как имя переменной и директорию, где находится php.ini , как значение переменной (например, C:\php)

Нажмите OK и перезапустите ваш компьютер

На Windows 98/Me вам необходимо отредактировать файл autoexec.bat :

Откройте Notepad (Start -> Run и введите notepad)

Откройте файл C:\autoexec.bat

Добавьте новую строку в конец файла: set PHPRC=C:\php (замените C:\php на директорию, где находится php.ini ). Учтите, что путь не должен содержать пробелы. Например, если вы установили PHP в C:\Program Files\PHP , вы можете вместо этого ввести C:\PROGRA

Сохраните файл и перезапустите ваш компьютер

Возможно ли использовать согласование содержания в Apache (опция MultiViews) c PHP?

Все работает замечательно, если ссылки на PHP файлы имеют расширение. Этот FAQ рассматривает только случай, когда ссылки на PHP файлы не имеют расширения и вы хотите использовать согласование содержания для отбора PHP файлов из URL без расширений. В этом случае, замените строку AddType application/x-httpd-php .php на:

PHP может обрабатывать только GET и POST запросы?

Нет, можно обрабатывать любые запросы, например, CONNECT. Необходимый статус ответа можно послать с помощью функции header() . Если нужно обрабатывать только GET и POST запросы, то этого можно достигнуть с помощью такой конфигурации Apache:

30+ лучших приемов PHP для начинающих

Дата публикации: 2010-04-14

От Автора: PHP – самый широко используемый в Сети язык программирования. Представляем тридцать с небольшим лучших приемов для новичков, желающих приобрести основные навыки — php для начинающих.

1. Подружитесь со справочником по PHP

Если вы новичок в PHP, значит, пришло время познакомиться с внушающим почтение справочником PHP. Справочник по PHP невероятно исчерпывающий и содержит действительно полезные комментарии к каждой статье. Перед тем, как задавать вопросы или пытаться самостоятельно разрешить проблему, сэкономьте время и просто возьмите курс на справочник. Ответы на ваши вопросы уже удобно разместились в полезной статье на сайте PHP.net.
В данном случае мы Вам рекомендуем поискать самостоятельно справочники на русском языке, лучше php для начинающих. Будем рады, если Вы дадите ссылке на полезные справочники в комментариях к статье (Просто учитывайте, что это перевод статьи).

2. Включите отчет об ошибках

Отчет об ошибках в PHP очень полезен. Вы обнаружите ошибки в своем коде, которых не замечали ранее, однако не все они препятствуют работе приложения. Есть разные уровни детализации отчета, которые можно использовать, но E_ALL будет одинаково представлять вам все ошибки, критические ситуации и предупреждения.

Когда ваше приложение готово к продуктивной эксплуатации, придется выключить отчет об ошибках, иначе ваши посетители будут видеть странные сообщения, в которых ничего не поймут.

3. Попробуйте IDE

IDE (Integrated Development Environments/интегрированные среды разработки) – полезные инструменты для любого разработчика. Хотя они подойдут не для каждого, IDE определенно имеют свое значение. IDE обеспечивают такие инструменты, как:

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Code completion (подсказки идентификаторов в редакторе кода)

Предупреждения об ошибках

Рефакторинг кода (переделка кода)

А также большое количество других возможностей. Существует множество отличных IDE, поддерживающих PHP.

4. Попробуйте PHP-frameworks

Вы можете многое узнать о PHP, просто экспериментируя с PHP-фреймворками. Такие фреймворки, как CakePHP или CodeIgniter, позволяют быстро создавать приложения PHP, даже если вы в нем не эксперт. В каком-то смысле они – дополнительные подпорки, которые показывают вам, каким образом должно выглядеть приложение PHP, и демонстрируют полезные концепции программирования (вроде отделения логики от дизайна и т.д.).

Возражение: лично я не советую новичкам пользоваться фреймворками. Сначала выучите основы.

5. Научитесь DRY

DRY – аббревиатура от Don’t Repeat Yourself, (Не Повторяйтесь), и это – полезная концепция программирования, без разницы на каком языке. DRY-программирование, как предполагается названием, гарантирует, что вы не пишете избыточного кода. Вот пример от Reinhold Weber:

теперь применением к нему подход DRY:

Более подробно о концепции DRY можно прочесть здесь и здесь.

6. Делайте отступы и используйте пробелы в коде для читаемости

Если вы не используете отступы и пробелы в коде, то результат выглядит, как картина Джексона Поллака (Jackson Pollack). Обеспечьте читаемость своего кода и нормальный поиск, потому что почти наверняка в будущем вы будете делать в нем изменения. IDE и современные текстовые редакторы могут автоматически делать отступы в коде.

7. Делайте код многоуровневым

Разделение на уровни ваших приложений – это ничто иное, как разделение различных компонентов кода на части. В будущем это даст вам возможность легко изменять код.

8. Всегда используйте

Часто программисты пытаются использовать сокращения в операторах PHP. Вот как это обычно делается:

Хотя это действительно экономит несколько символов, все эти методы являются устаревшими и неофициальными. Придерживайтесь стандартного , так как это гарантированно будет поддерживаться всеми будущими версиями.

9. Используйте содержательные, последовательные названия

Именование – не только для вашего собственного удовольствия. Нет ничего хуже, чем продираться сквозь бессмысленные условные обозначения другого программиста. Помогите самому себе и другим, используя для своих классов и свойств имена, имеющие смысл.

10. Комментируйте, комментируйте, комментируйте

Кроме использования пробелов и отступов для разделения кода, вам также придется использовать встроенные комментарии, чтобы снабжать примечаниями свой код. Позже вы поблагодарите сами себя, когда придется возвращаться и искать что-либо в коде, или если вы просто не помните того, что делала определенная функция. Это также полезно для тех, кому нужно просмотреть ваш код.

11. Установите MAMP/WAMP

MySQL — самый популярный вид базы данных, используемый с PHP (хотя и не единственный). Если нужно настроить локальное окружение для разработки и тестирования ваших PHP-приложений на компьютере, предусмотрите установку MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш собственный компьютер может стать утомительным процессом, а оба этих программных пакета содержат MySQL. Ловко и просто.

12. Установите лимиты своим скриптам

Установка лимита времени на PHP-скрипты – очень ответственная вещь. Бывают моменты, когда скрипты выходят из строя, и когда это произойдет, вам придется использовать свойство set_time_limit (установить лимит времени), чтобы избежать бесконечно повторяющихся циклов и истечения таймаутов времени соединения с базой данных. Set_time_limit устанавливает лимит времени на максимальное количество секунд, за которое выполняется скрипт (по умолчанию 30). По истечении этого времени возбуждается неустранимая ошибка.

13. Используйте объекты (или ООП)

Объектно-ориентированное программирование (ООП) использует объекты, чтобы представлять компоненты приложения. ООП – это не только способ разбить свой код на отдельные логические секции, оно также снижает количество повторений кода и делает намного более легким его модифицирование в будущем.

14. Поймите разницу между одинарными и двойными кавычками

Использование одинарных кавычек в строках более эффективно, так как парсеру (синтаксическому анализатору) не приходится просеивать код в поиске специальных символов (прим. перев. escape-последовательностей) и прочих вещей, что позволяют двойные кавычки. Там, где это возможно, старайтесь всегда использовать одинарные кавычки.

Возражение: Собственно, это не обязательно верно. Тесты Benchmark показывают, что при тестировании строк без переменных существуют определенные преимущества быстродействия при использовании двойных кавычек.

15. Не ставьте phpinfo() в свой Webroot

Phpinfo – чудесная вещь. Просто создав PHP-файл, в котором есть:

FAQ форума Программирование::PHP

Давайте его к человеческому (современному) виду приведём .

Оглавление

Как правильно читать ман. Все перечитал, а нужного не нашел…

Полезные ссылки

  1. http://www.google.com. Это, без шуток, самая важная ссылка по PHP. При некотором умении в ней можно нейти ответ на любой вопрос. Но даже и не обладая особыми навыками в поиске, можно получать потрясающие результаты. Например, просто введите в строку поиска ту ошибку, которую выдал РНР.
  2. Языки программирования — PHP на webclub.ru — www.webclub.ru/content/programming_php. Ссылка оставлена в мемориальных целях…
  3. Официальная документация по PHP. Самая главная, полная, подробная и актуальная, с комментариями пользователей.
  4. Собрание ссылок на различные варианты документации, в том числе и русские переводы — http://phpfaq.ru/docs
  5. phpfaq.ru — Ответы на САМЫЕ ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ. Обязательно к прочтению. Вы обязательно столкнетесь с каждым из освещенных там вопросов.
  6. Клуб российских PHP разработчиков — http://www.phpclub.net/. Там же — самая мощная система форумов по PHP в России.
  7. Самый известный, наверное, российский ресурс — PHP по-русски.
  8. Сайт Дмитрия Котерова, автора книги «Самоучитель по РНР», постоянного посетителя данного форума. Содержит значительное количество интересных материалов и оригинальных разработок, таких как «Денвер» и «Орфо».
  9. WebScript.Ru — каталог Internet, в котором собраны преимущественно свободно распространяемые скрипты, документация по языкам программирования Perl и PHP. Неплохой форум.
  1. ЧПУ и PHP — Дмитрий Смирнов пишет про ЧПУ (Человекопонятный УРЛ :-), в том числе — и про обработку 404-й ошибки (когда запрашиваемый документ не был найден).
  2. Числа прописью.
  3. PHP в деталях. Собрание авторских статей на самые разные темы, посвященные РНР и часто задаваемым вопросам по нему.
  4. Помоги себе сам: как правильно задавать вопросы. Обширный текст, который реально может помочь с тем, как найти ответ на свой вопрос, и как правильно задать его в форуме.

Некоторые западные ресурсы:

  1. http://www.phpwizard.net/ — ресурс, ориентированный на PHP. Проекты (такие как phpMyAdmin, phpChat), ссылки, руководства и т.п.
  2. http://www.phpbuilder.com/ — статьи. Много и умные.
  3. http://www.zend.com/ — «Zend — лидер в технологии PHP. Наша миссия — в том, чтобы обеспечить коммерческую жизнеспособность и поддержку PHP решений для Web.»
  4. http://www.soysal.com/PHPEd/ — небольшой редактор, сделанный по подобию HomeSite, но для PHP.
  5. http://www.hotscripts.com/PHP/ — одно из самых больших собраний готовых скриптов.
  6. http://sourceforge.net/ — сервис для разработчиков, работающих по принципу Открытого Исходного Кода: форумы, исходники и т.п.
  7. http://www.devshed.com/Server_Side/PHP/
  8. WeberDev.com (англ.) — «…был задуман в качестве демонстрации примеров кода, так, чтобы это было более легко для программистов новичка в области php…»
  9. Графическая библиотека GD (англ.) — A graphics library for fast image creation.

Передача из формы параметров с множественным значением (коллекция SELECT multiple и т.п.)

При передаче данных из одного файла PHP далее для обработки передается массив вида имя_элемента => значение. Но есть некоторые элементы (например, select с опцией множественного выбора multiple), где в качестве значения фигурирует не одно, а группа (коллекция). Что делать в этом случае?

В этом случае в принимающий PHP-скрипт попадет массив под именем $_REQUEST[‘collect’] , содержащий все выбранные значения.

Подобный прием можно использовать для объединения в коллекцию и других параметров формы:

Как сделать upload картинки через форму?

Простой HTML-код для организации закачки файла с компьютера пользователя выглядит так:

Принимающий скрипт выглядит примерно так:

Замечание: Достаточно частой ошибкой является перекодирование http-сервером принимаемых данных. Если у Вас русский Apache, то эта проблема исправляется выставлением директивы:

Эта директива может быть выставлена как в файле httpd.conf, так и в .htaccess.

Как я могу вызвать PHP-скрипт внутри другого скрипта и передать туда некоторые переменные? Что-то аналогичное для SSI

Используйте include «second.php»; или require «second.php»;

Вложенный таким образом скрипт будет включен в место вызова этих конструкций, как если бы вы вставили его туда с помощью Copy-Paste.

Как можно прочитать строку из файла?

Помимо использования функция fgetc , fgets и fgetss , Вы можете использовать $file = file($filename) . Функция file читает файл $filename в массив $file.

Прочитать в одну переменную весь файл целиком можно с помощью функции file_get_contents .

Как передать значение переменной из PHP скрипта в функцию JavaScript или в HTML-код?

Просто вывести их как . Пример:

Как я могу перенаправить посетителя на другой URL из PHP-скрипта?

Как сделать так, чтоб не выдавалась строка «Content-Type…», когда я запускаю PHP из командной строки?

Некоторые параметры вызова php:

Я использую шифрование паролей с помощью UNIX. Как мне проверить соответствие введенного пароля зашифрованному?

Такое шифрование, то есть хеширование, является односторонним. Это означает, что вы не можете декодировать зашифрованный пароль — вы можете только сравнить два зашифрованных пароля. Например:

Как узнать URL выполняемого скрипта, страницу, с которой пришел посетитель и т.п.?

В PHP (и не только) существуют предопределенные переменные окружения веб-сервера. Ниже — список для сервера Apache. Как сказано в руководстве: «если Вы используете другой веб-сервер, мы не гарантируем наличия всех, нижеприведенных переменных».

Вот некоторые из таких переменных:

Полный список находится в разделе Predefined variables руководства по PHP. Также список всех переменных окружения и настроек PHP можно вывести функцией phpinfo . Рекомендуется запускать ее для проверки на каждом новом для Вас хостинге. Встречаются некоторые коварные хостинги, на которых переменные окружения Апача могут определяться не совсем так, как вы ожидаете.

Дело в том, что Cookie явлается частью HTTP -заголовка документа. Вызов функции setcookie должен происходить до окончания вывода HTTP-заголовка (подробнее см. Hypertext Transfer Protocol — HTTP/1.1).

На практике это означает, что если перед вызовом setcookie() есть какой-либо вывод — echo, HTML-текст вне PHP-кода, или если PHP-скрипт, устанавливаюший Cookie, вызывается включением SSI через — то setcookie() выдает ошибку или (в последнем случае) cookie просто не установится.

Если Вы не можете вызвать setcookie() в начале скрипта, то можно включить буферизацию вывода. Для этого вставьте вызов функции ob_start раньше любого вывода в браузер:

Эта функция заставит PHP ждать, пока отработает весь скрипт, и только потом отдавать данные веб-серверу. Таким образом можно отправлять заголовки в любое время независимо от выводимой информации.

Как отследить повторный вызов скрипта при обновлении страницы?

Скрипт отрисовывает форму и посылает данные post-ом самому себе. Если все правильно — добавляем запись и делаем перенаправление с помощью заголовка Location (перенаправление помешает пользователю отправить те же самые данные дважды путем рефреша страницы). Если не все правильно — опять рисуем форму и выдаем сообщение об ошибке.

Как отключить кеширование страницы PHP-скрипта?

Для этого нужно выставить следующие заголовки:

Работа с сокетами. Пример: как скачать файл(страничку) через прокси.

Прокси-сервер: IP: 192.165.0.10 PORT: 3128

(с) Сергей Захаров (aka ERge) [досье]

Ручной Download, или как скриптом открыть пользователю окошко сохранения файла.

Чтобы в браузере открылся диалог «Сохранить файл» с названием файла file.dat, скрипт должен послать такие заголовки:


Не мешало бы также ссылаться на скрипт как http://. /download.php?file.dat , иначе браузеры, основанные на Mozilla, могут попытаться записать файл как file.dat.php.

Примечание: Не используйте заголовок Cache-Control: no-cache в таких скриптах — большинство версий Internet Explorer не смогут скачать файл. (c) Владимир Палант [досье]

Настройка PHP с помощью файла .htaccess

Многие опции, обычно указываемые в файле php.ini, могут быть изменены с помощью файла .htaccess. Существует два формата:

Разумеется, следует помнить о том, что действие .htaccess распространяется на текущую и вложенные директории, и в конфигурации Апача должна быть задана опция AllowOverride Options (или AllowOverride All ). Подробнее про работу с .htaccess читайте в руководстве по Apache.

Илон Маск рекомендует:  Реклама загружается когда страница прокручивается до неё

Как заставить Sablotron говорить по-русски?

Обновление картинки, сформированной php-скриптом

  1. Выдавать заголовки, отключающие кеширование.
  2. Добавлять в конец ссылки, запрашивающей картинку, какую-то случайную величину:

Удобно в качестве случайной величины использовать дату модификации картинки, если таковую возможно получить.

Как из РНР узнать разрешение экрана у пользователя?

Никак. РНР исполняется на сервере и ничего о компьютере клиента не знает.

В php.ini отключено использование cookies для передачи SID в сессиях, но PHP всё равно пытается передавать SID в куках и не пытается даже подставлять SID в ссылки.

Убедитесь, что нужные параметры выставлены правильно:

Где можно найти информацию для начинающих в РНР?

Где взять русскую документацию по РНР4? А по MySQL?

Человек по имени Александр Пирамидин перевел документацию от версии 4.2.1 (зеркало на PHPClub-е). Этот перевод вполне подходит для изучения PHP, но надо помнить, что наиболее точной является документация на оригинальном сайте.

Также частично переведенный мануал можно найти на php.ru.

Не передаются переменные.

Данные в скрипт передаются. Просто, начиная с версии 4.1, РНР перестал автоматически назначать их переменным. За это отвечает параметр register_globals в php.ini. Если он выключен, то получить значение переменной можно, обратившись к массиву, соответствующему способу передачи данных в скрипт.
Например:
Передаем методом GET: script.php?var=value — echo $_GET[‘var’] напечатает «value».
Подробнее об этом можно прочитать здесь: http://www.xpoint.ru/archive/topic8/43/8759.html

Как писать русскими буквам в GD без TrueType?

Вот есть такая страничка http://www.sbnet.ru/soft/gdfonts/pages/index.htm
Там написано, как в gd рисовать по-русски, не дергая truetype при этом.
(c) Гоша

Почему разработчики PHP не рекомендуют использовать его с Apache 2.x?

  1. Apache2 по всем тестам работает процентов на 15-20 медленнее Apache 1.3*. Этот факт давно известен, в том числе и разработчикам Apache. Выигрыш от его использования может быть только на очень больших сайтах и заключается только в меньшем расходе памяти при большой нагрузке (100 процессов httpd жрут памяти больше, чем 100 нитей Apache2). В Apache2, несмотря на то, что разработчики называют его стабильным, довольно часто находят довольно серьезные баги. Это объяснимо, учитывая то, что код Apache2 еще достаточно новый, в отличие от вылизанного временем кода Apache1.3
  1. В PHP полно расширений, при программировании которых не была применена практика безопасного программирования для нитей (thread-safe). Поэтому, даже если ядро языка перестанет быть экспериментальным для Apache2, никто не гарантирует, что любое из расширений не сможет вызвать крах системы.
  1. Наконец, последняя версия Apache2 нисколько не «свежее» последней версии ветки 1.3.

Как средствами GD поместить прозрачный логотип на свою фотографию

Если Вы хотите поместить прозрачное PNG-изображение на другое изображение, необходимо использовать ImageAlphaBlending . Все использующиеся PNG-изображения должны быть сохранены в формате PNG-24 (опция Save for Web в Фотошопе). Например, Вы хотите поместить прозрачный логотип на свою фотографию. Тогда нужно сделать так:

Как прочитать скриптом данные, посланные методом POST напрямую?

  1. Размер блока пришедших данных содержится в переменной окружения CONTENT_LENGTH и читается из $_ENV[«CONTENT_LENGTH»] или getenv(«CONTENT_LENGTH») .
  1. Если PHP установлен как CGI и ваша программа работает из командной строки (в консольном режиме), данные можно читать из стандартного потока ввода stdin, как из обычного файла. Для этого достаточно открыть этот поток как файл:
  1. Если PHP установлен как модуль, данные можно получить из глобальной переменной $HTTP_RAW_POST_DATA (она же $GLOBALS[‘HTTP_RAW_POST_DATA’] ). Для этого необходимо в файле php.ini раскомментировать/добавить следующую строчку:

Или добавить в файл .htaccess:

Однако это все равно не сработает, если запрос был отправлен с enctype=»multipart/form-data» (устанавливается при загрузке файлов).

Как сделать красивую превьюшку средствами GD

Для этого рекомендутся воспользоваться функциями imagecreatetruecolor (для создания новой «правильноцветной» картинки и функцией imagecopyresampled (для создания уменьшенной копии исходной картинки).

Как форсировать кеширование динамически выдаваемых картинок?

Функция mail слишком долго отправляет письма. Как можно ускорить процесс отправки?

Отправлять письма не в рамках выполнения основного скрипта, а посредством создания еще одного процесса, выполняемого в фоновом режиме.

XSLT-преобразования в PHP. Sablotron error on line 1: XML parser error 4: not well-formed (invalid token)

Несмотря на то, что написано в документации, реально в качестве аргументов xslt_process надо передавать не имена файлов, а их содержимое:

Исследования же Михаила Кюршина выявили, что xslt_process принимает адреса файлов. Нужен именно адрес (URL), а не путь на диске. К примеру, file:///C:/xxx/ooo.xml — это адрес, а C:/xxx/ooo.xml — это путь на диске.

Как проверить, полностью ли докачался файл у пользователя (то есть, не отменил ли он загрузку на середине или вдруг у него инет вырубило)?

Средствами php это невозможно. Если вам это действительно нужно, почитайте, например, как Иван Сагалаев решал похожую задачу на языке python.

FPublisher

Web-технологии: База знаний

Документация PHP

Установка

Этот раздел содержит общие вопросы по установке PHP. PHP доступен практически для любой ОС (за исключением, может быть, MacOS предшествующей OSX) и любого web сервера.

Для установки PHP следуйте инструкциям в Установка и настройка.

Почему я не должен использовать Apache2 с потоковым MPM в эксплуатации?

PHP — это клей. Клей, используемый для построения классных web приложений, склеивая дюжины сторонних библиотек и создавая впечатление одного согласованного целого, с помощью интуитивного и легко изучаемого языка. Гибкость и мощь PHP полагается на стабильность и устойчивость используемой платформы. Для склейки вместе ему необходимы работающая ОС, работающий web сервер и работающие сторонние библиотеки. Когда что-либо из этого перестаёт работать PHP нужны способы определения проблем и их быстрого исправления. Если вы усложняете низлежащую систему, не разделяя полностью потоки выполнения, не выделяя раздельные сегменты памяти и не предоставляя «песочницу» для игры для каждого запроса, то ваша PHP система увязнет в глине.

Если вы всё-таки чувствуете, что должны использовать потоковый MPM, взгляните на конфигурацию с FastCGI, где вы можете запускать PHP в своём собственном пространстве памяти.

И наконец, это предупреждение против потокового MPM не настолько остро для пользователей Windows, так как большинство библиотек на этой платформе потокобезопасны.

Unix/Windows: Где должен находиться файл php.ini ?

На Unix по умолчанию он должен находиться в директории /usr/local/lib , определяемой как /lib . Большинство людей изменяют это во время компиляции с помощью опции —with-config-file-path Для примера, вы можете задать что-то типа:

Затем скопировать файл php.ini-dist из дистрибутива в /etc/php.ini и отредактировать его для ваших локальных потребностей.

На Windows по умолчанию php.ini находится в Windows директории. Если вы используете Apache web сервер, php.ini сначала ищется в директории, где был установлен Apache, например c:\program files\apache group\apache . В этом случае на одной машине у вас могут быть разные файлы php.ini для разных версий Apache.

Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение ‘Document Contains No Data’ (Документ Не Содержит Данных)! Что происходит?

Вероятно, PHP падает по какой-то причине. Для того, чтобы убедиться в этом, просмотрите лог ошибок вашего сервера и затем попытайтесь воспроизвести проблему с помощью небольшого тестового примера. Если вы умеете пользоваться ‘gdb’, то добавьте трассировку к вашему сообщению об ошибке, это поможет разработчикам точно определить проблему. Если вы используете PHP как модуль Apache попробуйте что-то типа:

Остановите ваши httpd процессы

Остановите ваши httpd процессы

> run -X -f /path/to/httpd.conf

Затем вызовите URL, на котором возникает проблема, из вашего браузера

> run -X -f /path/to/httpd.conf

Если вы получаете дамп, gdb должен сейчас сообщить вам об этом

Вам необходимо включить трассировку в ваше сообщение об ошибке, которое должно быть отправлено с » http://bugs.php.net/

Если ваш скрипт использует функции регулярных выражений (ereg() и компания), то вам необходимо убедиться, что вы скомпилировали PHP и Apache с одним и тем же пакетом регулярных выражений. Это должно происходить автоматически для PHP и Apache 1.3.x

Unix: Я установил PHP, используя RPMS, но Apache не обрабатывает PHP страницы! Что происходит?

Полагая, что Apache и PHP оба были установлены из пакетов RPM, вам требуется в вашем файле httpd.conf раскомментировать или добавить все или некоторые из следующих строк:

. в глобальные свойства или в свойства VirtualDomain, для которого вы хотите иметь поддержку PHP.

Unix: Я установил PHP 3 используя RPMS, но он не компилируется с поддержкой нужной мне базы данных! Что происходит?

Из-за того, как построен PHP 3, собрать полный и гибкий RPM для PHP не легко. Эта проблема решена в PHP 4. Для PHP 3 мы рекомендуем способ, описанный в файле INSTALL.REDHAT из дистрибутива PHP. Если вы всё-таки настаиваете на использовании варианта с RPM для PHP 3, читайте далее.

Те, кто собирает RPM пакеты, настраивают RPMS для установки без поддержки баз данных для упрощения установок и потому что RPMS использует /usr/ вместо стандартной /usr/local/ директории для файлов. Вам необходимо указать в спек файле RPM какие базы данных поддерживать и где находится ваш сервер баз данных.

Следующий пример объясняет процесс добавления поддержки для популярного сервера баз данных MySQL, используя mod установку для Apache.

Конечно, всё это может быть применено для любого сервера баз данных, который PHP поддерживает. Для этого примера, мы будем полагать, что вы установили MySQL и Apache полностью с RPMS.

Во-первых, удалите mod_php3 :

Затем получите rpm с исходниками и УСТАНОВИТЕ его, НЕ —rebuild

Затем отредактируйте файл /usr/src/redhat/SPECS/mod_php3.spec

В секции %build добавьте поддержку нужной вам базы данныз и укажите путь

Для MySQL вы добавите —with-mysql=/usr Секция %build будет выглядеть как что-то типа следующего:

После того, как вы сделали эти изменения, постройте бинарный rpm как:

Затем установите этот rpm

Перезапустите Apache и теперь у вас есть PHP 3 с поддержкой MySQL, установленный из RPM. Заметьте, что на много проще просто собрать PHP 3 из дистрибутива и следовать инструкциям в файле INSTALL.REDHAT дистрибутива.

Unix: Я установил заплатку в Apache для расширений FrontPage и неожиданно PHP перестал работать. Неужели PHP не совместим с FrontPage расширениями для Apache?

Нет, PHP прекрасно работает с FrontPage расширениями. Проблема в том, что FrontPage заплатка изменяет некоторые важные для PHP структуры. Перекомпиляция PHP (выполняя ‘make clean ; make’) после установки FP заплатки должна решить эту проблему.

Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю пустой экран.

Сделайте просмотр исходника (‘view source’) в web браузере и, вероятно, вы увидите исходный код вашего PHP скрипта. Это означает, что web сервер не послал скрипт PHP для интерпретации. Что-то не так с конфигурацией сервера, проверьте конфигурацию сервера согласно установочным инструкциям PHP.

Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю ошибку сервера 500.

Что-то произошло когда сервер пытался выполнить PHP. Чтобы увидеть более вразумительное сообщение об ошибке, используя командную строку, перейдите в директорию где находится исполняемый файл PHP ( php.exe на Windows) и запустите php -i. Если при запуске PHP возникли какие-либо проблемы, то появится соответствующее сообщение об ошибке, которое может дать вам понять что делать дальше. Если вы получаете экран, заполненый HTML кодом (вывод функции phpinfo()), то PHP работает и ваша проблема возможно связана с конфигурацией вашего сервера, которую вам необходимо проверить.

Некоторые операционные системы: Я установил PHP без ошибок, но когда я пытаюсь запустить Apache, я получаю ошибки «undefined symbol» (неопределённый символ):

На самом деле это связано с клиентскими библиотеками MySQL и не имеет никакого отношения к PHP. Одним нужна опция —with-zlib , другим — нет. Это также описано в MySQL FAQ.

Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю ошибку:

Это сообщение об ошибке означает, что PHP не смог вывести абсолютно ничего. Чтобы увидеть более вразумительное сообщение об ошибке, используя командную строку, перейдите в директорию, где находиться испольняемый файл PHP ( php.exe на Windows) и запустите php -i. Если при запуске PHP возникли какие-либо проблемы, то появится соответствующее сообщение об ошибке, которое может дать вам понять что делать дальше. Если вы получаете экран, заполненый HTML кодом (вывод фиункци phpinfo() функции), то PHP работает.

Как только PHP работает из командной строки, попытайтесь опять вызвать скрипт из браузера. Если он все также не работает, то причина может быть одна из следующих:

  • Анонимный пользователь Internet не имеет доступ к вашему PHP скрипту, php.exe , php4ts.dll , php.ini или любому загружаемому PHP расширению из за прав доступа, установленных на эти файлы.
  • Файл скрипта не существует (или, вероятно, не там где вы думаете он должен быть, относительно вашей корневой web директории). Заметьте, что для IIS вы можете поймать эту ошибку пометив ‘check file exists’ при настройке ассоциирования скриптов (script mappings) в Администраторе Internet Сервисов (Internet Services Manager). Если файл скрипта не существует, то сервер выдаст ошибку 404. Также допольнительная польза в том, что IIS будет выполнять необходимую вам аутентификацию, основываясь на NTLanMan правах доступа на ваш скрипт.

Windows: Я следовал всем инструкциям, но так и не смог заставить PHP и IIS работать вместе!

Убедитесь что все пользователи, кому необходимо запускать PHP скрипты, имеют право выполнять php.exe ! IIS использует анонимного пользователя, который добавлен во время установки IIS. Этот пользователь должен иметь права на php.exe . Также любому аутентифицированному пользователю будут нужны права на выполнение php.exe . И для IIS4 вам необходимо сказать ему, что PHP является скриптовой системой. Также вам захочется прочитать это.

Когда PHP запускается как CGI в IIS, PWS, OmniHTTPD или Xitami, я получаю следующую ошибку: Security Alert! PHP CGI cannot be accessed directly..

Вы должны установить директиву cgi.force_redirect в . По умолчанию она установлена в 1, поэтому убедитесь, что директива не закоментирована (с ;). Как все директивы, она задается в php.ini

Так как значение по умолчанию 1, то очень важно быть уверенным на 100%, что был прочитан верный php.ini файл. Для подробностей читайте здесь.

Как узнать, что мой php.ini был найден и прочтён? Похоже, что мои изменения не были восприняты?

Чтобы убедиться, что PHP прочитал ваш php.ini , вызовите phpinfo() и недалеко от начала будет находиться строка, озаглавленная Configuration File (php.ini). Она скажет вам где PHP ищет php.ini и был ли файл прочитан. Если указана только директория, то файл не был прочитан и вы должны поместить ваш php.ini в эту директорию. Если php.ini включён в PATH, то он был прочитан.

Если php.ini был прочитан и вы запускаете PHP как модуль, то не забудьте перезапустить ваш web сервер после внесения изменений в php.ini .

Как на Windows добавить мою PHP директорию в PATH ?

На Windows NT, 2000, XP и 2003:

Идите в Control Panel и откройте системную иконку (Start -> Settings -> Control Panel -> System, или просто Start -> Control Panel -> System for Windows XP/2003)

Перейдите в закладку Advanced

Нажмите кнопку ‘Environment Variables’

Смотрите в окошко ‘System Variables’

Найдите Path (возможно, вам придется сделать прокрутку, чтобы найти его)

Двойной щелчок на Path

Добавьте в конец вашу PHP директорию через ‘;’ (например ;C:\php)

Нажмите OK и перезапустите ваш компьютер

На Windows 98/Me вам необходимо отредактировать файл autoexec.bat :

Откройте Notepad (Start -> Run и введите notepad)

Откройте файл C:\autoexec.bat

Найдите строку с PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;. и добавьте в конец строки: ;C:\php

Сохраните файл и перезапустите ваш компьютер

Прежде в руководстве по PHP рекомендовалось копировать файлы в системную директорию Windows, так как эта директория ( C:\Windows , C:\WINNT , и т.п.) входит в системный PATH по умолчанию. Копирование файлов в системную директорию Windows давно уже противопоказывается и может вызвать проблемы.

Как в Windows сделать файл php.ini доступным для PHP?

Для этого есть несколько путей. Если вы используете Apache, то читайте инструкции по его установке (Apache 1, Apache 2), в ином случае, вы должны установить переменную окружения PHPRC :

На Windows NT, 2000, XP и 2003:

Идите в Control Panel и откройте системную иконку (Start -> Settings -> Control Panel -> System, или просто Start -> Control Panel -> System for Windows XP/2003)

Перейдите в закладку Advanced

Нажмите кнопку ‘Environment Variables’

Посмотрите в окошко ‘System variables’

Щёлкните на ‘New’ и введите ‘PHPRC’ как имя переменной и директорию, где находится php.ini , как значение переменной (например C:\php)

Нажмите OK и перезапустите ваш компьютер

На Windows 98/Me вам необходимо отредактировать файл autoexec.bat :

Откройте Notepad (Start -> Run и введите notepad)

Откройте файл C:\autoexec.bat

Добавьте новую строку в конец файла: set PHPRC C:\php (замените C:\php на директорию, где находится php.ini )

Сохраните файл и перезапустите ваш компьютер

Возможно ли использовать согласование содержания в Apache (опция MultiViews) c PHP?

Всё работает замечательно, если линки к PHP файлам имеют расширение. Этот FAQ рассматривает только случай, когда линки к PHP файлам не имеют расширения и вы хотите использовать согласование содержания для отбора PHP файлов из URL без расширений. В этом случае, замените строку AddType application/x-httpd-php .php на:

Это решение не работает в Apache 1, так как в нём PHP модуль не ловит php-script.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL