PHP: различия между версиями
Раздел Как работает PHP
(Мелкие правки) |
(Раздел Как работает PHP) |
||
Строка 62: | Строка 62: | ||
* При загрузке файлов на сервер от сторонних пользователей, как минимум проверяйте расширение файла на допустимые. А лучше загружайте файлы в отдельную папку с установленными ограничениями на возможность запуска любых скриптов и программ. | * При загрузке файлов на сервер от сторонних пользователей, как минимум проверяйте расширение файла на допустимые. А лучше загружайте файлы в отдельную папку с установленными ограничениями на возможность запуска любых скриптов и программ. | ||
* Не храните файлы с конфиденциальной информацией в публично доступных папках вашего проекта и не загружайте их в репозитории. | * Не храните файлы с конфиденциальной информацией в публично доступных папках вашего проекта и не загружайте их в репозитории. | ||
== Как работает PHP == | |||
PHP может работать по различным сценариям и схемам, разберем здесь типовую. | |||
# Пользователь хочет посмотреть страницу <nowiki>https://izi.wiki/index.php</nowiki>. | |||
# Запрос от браузера пользователя передается на сервер по HTTP протоколу (та самая аббревиатура из ссылок) | |||
# На сервере установлена специальная программа "веб-сервер" (примеры Nginx, Apache). Она умеет обрабатывать HTTP запросы. | |||
# Веб-сервер разбирает запрос и по внутренним правилам принимает решение: вернуть ошибку, перенаправить на другой адрес, вернуть пользователю файл или запустить PHP приложение. | |||
# Если требуется запустить приложение, веб-сервер передает данные запроса пользователя в другую программу: PHP-интерпретатор. | |||
# Здесь происходит сложная магия. PHP-интерпретатор проводит лексический и синтаксический анализ php файлов на сервере, генерирует промежуточный байт-код (opcodes - operation codes) и запускает виртуальную машину Zend Engine. В этом не нужно разбираться новичку. | |||
# Итог: PHP программа записанная в php файле выполняется. Если требуется, в процессе выполнения она может обращаться к базе данных и другим сторонним приложениям. | |||
# Результат выполнения в виде набора заголовков и текста ответа PHP-интерпретатор возвращает веб-серверу. | |||
# Веб-сервер из полученных от PHP данных формирует корректный ответ по HTTP протоколу и возвращает пользователю в браузер. В большинстве случаев результат выполнения PHP программы - это HTML страница. | |||
# Браузер обрабатывает ответ и отображает данные пользователю на экране. | |||
== Проблемные места == | == Проблемные места == |