Переустановка php. Пошаговая инструкция по настройке PHP на хостинге. Как узнать версию PHP. Установка PHP в качестве модуля

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

display_errors=off

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

error_reporting = E_ALL & ~E_DEPRECATED

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

error_reporting = 0

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

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

ignore_repeated_errors = On

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

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

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

max_execution_time = 30

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

max_input_time=60

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

max_input_vars = 1000

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

memory_limit = 128M

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

post_max_size = 8M

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

open_basedir = /var/www/

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

disable_functions = ini_set

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

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

include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"

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

extension_dir="./"

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

sys_temp_dir = "/tmp"

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

file_uploads = On

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

upload_max_filesize = 2M

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

max_file_uploads = 20

Настройка 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 это отдельная тема, потому что там есть много дополнительных настроек, и, возможно, мы рассмотрим его в одной из следующих статей. Если у вас остались вопросы, спрашивайте в комментариях!

Установка веб-сервера на Linux:

  • Если у вас Ubuntu, то вам подойдёт статья "Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu 16.10 ".
  • Если у вас Arch Linux, то вам подойдёт статья "Установка LAMP (Linux, Apache, MySQL/MariaDB, PHP7 и phpMyAdmin) в Arch Linux / BlackArch ".

Локальный сервер очень полезный инструмент. Он точно пригодиться веб-мастерам, программистам на PHP, тестерам на проникновение. Все программы, входящие в типичную установку веб-сервера, являются бесплатными, у всех у них открыт исходный код. Локальный веб-сервер потребляет минимум ресурсов и, на самом деле, его совсем нетрудно установить и настроить.

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

Если вы будете в точности следовать инструкции, то у вас обязательно всё заработает! Кроме тех, у кого Windows XP - если лу вас эта операционная система, то для вас сделана специальная инструкция .

Я покажу пример установки на Windows 10, но если у вас другая версия Windows, то пусть вас это не смущает - процедура везде идентичная. Я буду скачивать последние (самые свежие) на момент написания версии программ. Если к тому времени, когда вы читаете, выйдут новые версии, то скачивайте именно их.

Этапы установки:

Вам также может пригодиться:

1. Подготовка (скачивание программ, входящих в сервер, создание структуры сервера)

Нам нужны:

  • Apache (непосредственно веб-сервер)
  • PHP - среда для работы PHP программ (требуется практически всеми веб-сайтами)
  • MySQL - система управления базами данных (требуется большинством веб-сайтов)
  • phpMyAdmin - очень удобный инструмент для управления базами данных

Официальный сайт разработчиков Apache это httpd.apache.org . Можно скачать Apache с этого сайта. Но официальная версия собирается с использованием старого компилятора, по этой причине она не работает с новыми версиями PHP. Авторы PHP рекомендуют Apache с сайта apachelounge.com/download . Поэтому для этой инструкции скачиваем Apache именно с сайта apachelounge.com/download .

Если у вас 64-битная версия Windows, то вы можете выбрать как 64-битную, так и 32-битную версию компонентов. Главное правило - все компоненты должны быть одной битности. Если у вас 32-битная версия Windows, то все компоненты должны быть 32-битными. Это не относится к phpMyAdmin, который написан на языке PHP. Для PHP программ понятие битности неприменимо.

Бесплатная версия MySQL называется MySQL Community Server . Её можно скачать на странице . На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив. На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись - но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download ». Обратите внимание на битность.

Ещё нам нужен файл C++ Redistributable Visual Studio 2017, т.е. Распространяемый компонент Visual C++ для Visual Studio 2017 (или любой другой более поздний), скачать его можно на официальном сайте Microsoft по ссылке (прямая ссылка на скачивание 64-битной версии; прямая ссылка на скачивание 32-битной версии). Этот файл нужен для веб-сервера. А для MySQL необходим Распространяемые пакеты Visual C++ для Visual Studio 2015. Его можно скачать по .

Итак, у меня скачались следующие файлы:

  • httpd-2.4.29-Win64-VC15.zip
  • php-7.2.0-Win32-VC15-x64.zip
  • mysql-8.0.11-winx64.zip
  • phpMyAdmin-4.7.6-all-languages.zip
  • vc_redist.x64.exe
  • vcredist_x64.exe

Установите файлы vc_redist.x64.exe и vcredist_x64.exe .

2. Создание структуры веб-сервера

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

В корне диска C:\ создайте каталог Server . В этом каталоге создайте 2 подкаталога: bin (для исполнимых файлов) и data .

Перейдите в каталог data и там создайте подпапки DB (для баз данных) и htdocs (для сайтов).

Перейдите в каталог C:\Server\data\DB\ и создайте там пустую папку data .

3. Установка Apache 2.4

Содержимое скаченного архива (точнее говоря, только каталог Apache24 ), распакуйте в C:\Server\bin\ .

Перейдите в каталог c:\Server\bin\Apache24\conf\ и откройте файл httpd.conf любым текстовым редактором.

В нём нам нужно заменить ряд строк.

Define SRVROOT "c:/Apache24"

Define SRVROOT "c:/Server/bin/Apache24"

#ServerName www.example.com:80

ServerName localhost

DocumentRoot "${SRVROOT}/htdocs"

DocumentRoot "c:/Server/data/htdocs/"

DirectoryIndex index.html

DirectoryIndex index.php index.html index.htm

# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride None

# AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # AllowOverride FileInfo AuthConfig Limit # AllowOverride All

#LoadModule rewrite_module modules/mod_rewrite.so

LoadModule rewrite_module modules/mod_rewrite.so

Сохраняем и закрываем файл. Всё, настройка Apache завершена! Описание каждой изменённой директивы вы найдёте на этой странице .

Откройте командную строку (это можно сделать нажав одновременно клавиши Win+X). Выберите там Windows PowerShell (администратор) и скопируйте туда:

C:\Server\bin\Apache24\bin\httpd.exe -k install

Если поступит запрос от файервола в отношение Apache, то нажмите Разрешить.

Теперь вводим в командную строку:

C:\Server\bin\Apache24\bin\httpd.exe -k start

И нажмите Enter.

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

7. Использование сервера и бэкап данных

В каталоге c:\Server\data\htdocs\ создавайте папки и файлы, например:

c:\Server\data\htdocs\test\ajax.php - этот файл, соответственно, будет доступен по адресу http://localhost/test/ajax.php и т.д.

Для создания полного бэкапа всех сайтов и баз данных достаточно скопировать каталог C:\Server\data\ .

Перед обновлением модулей, делайте бэкап папки bin - в случае возникновения проблем, можно будет легко откатиться к предыдущим версиям.

При повторной установке сервера или при его обновлении, необходимо заново настраивать конфигурационные файлы. Если у вас есть копии этих файлов, то процесс можно значительно ускорить. Желательно забэкапить следующие файлы:

  • c:\Server\bin\Apache24\conf\httpd.conf
  • c:\Server\bin\mysql-8.0\my.ini
  • c:\Server\bin\PHP\php.ini
  • c:\Server\data\htdocs\phpMyAdmin\config.inc.php

В них и хранятся все настройки.

8. Дополнительная настройка PHP

PHP в настоящее время очень мощный, гибкий, удобный инструмент. На локальном компьютере с помощью него можно решать разнообразные задачи, совсем не обязательно связанные с генерацией Web-страниц. При решении неординарных задач можно упереться в ограничения, установленные в настройках. Эти настройки содержаться в файле php.ini (c:\Server\bin\PHP\php.ini) Рассмотрим некоторые из них:

Memory_limit = 128M

устанавливает максимальное количество памяти, которое может использовать скрипт

Post_max_size = 8M

устанавливает максимальное количество данных, которые будут приняты при отправке методом POST

;default_charset = "UTF-8"

устанавливает кодировку (по умолчанию, строка закомментирована)

Upload_max_filesize = 2M

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

Max_file_uploads = 20

максимальное количество файлов для загрузки за один раз

Max_execution_time = 30

максимальное время выполнения одного скрипта

Менять эти настройки совершенно необязательно, но полезно о них знать.

9. Дополнительная настройка phpMyAdmin

Мы уже настроили phpMyAdmin и большинству вполне достаточно базового функционала. Тем не менее, на стартовой странице phpMyAdmin есть надпись: «Дополнительные возможности phpMyAdmin не настроены в полной мере, некоторые функции были отключены».

Новыми возможностями являются:

  • показ связей между (связанными) таблицами;
  • добавление информации о таблицах (начиная с версии 2.3.0 вы можете описывать в специальной таблице ‘table_info’ какая колонка будет показана во всплывающей подсказке при движении курсором над связанным ключом);
  • создание PDF-схемы (начиная с версии 2.3.0 вы можете в phpMyAdmin создавать PDF страницы, показывающие связи между вашими таблицами);
  • отображать комментарии столбцов (начиная с версии 2.3.0 вы можете делать комментарий с описанием каждого столбца для каждой таблицы. И они будут видны в «предварительном просмотре для печати». Начиная с версии 2.5.0, комментарии используются на собственных страницах таблиц и в режиме просмотра, показываясь как всплывающие подсказки над колонками (таблицы свойств) или встроены в заголовок таблицы в режиме просмотра. Они также могут быть показаны в дампе таблицы);
  • создавать закладки (начиная с версии 2.2.0, phpMyAdmin позволяет пользователям делать закладки на запросы. Это может быть полезно для часто используемых запросов);
  • история SQL-запросов (начиная с версии 2.5.0 вы можете сохранять вашу историю всех SQL запросов, которые были сделаны через интерфейс phpMyAdmin);
  • дизайнер (начиная с версии 2.10.0, доступен инструмент Дизайнер; он позволяет визуально управлять связями между таблицами);
  • информация о недавно использованных таблицах;
  • настройка интерфейса часто используемых таблиц;
  • слежение (начиная с версии 3.3.x доступен механизм слежения. Он помогает вам проследить каждую SQL команду, которая была выполнена phpMyAdmin’ом. Поддерживается запись работы с данными и запись команд. После включения, вы сможете делать версии таблиц);
  • пользовательские настройки (начиная с версии 3.4.x, phpMyAdmin позволяет пользователям задавать большинство настроек и сохранять их в базе данных);
  • настраиваемые меню (начиная с версии 4.1.0 вы можете создавать группы пользователей, которым будут доступны только назначенные пункты меню. Пользователь может быть определён в группу и будет видеть только пункты меню, доступные для его группы);
  • спрятать/показать пункты навигации (начиная с версии 4.1.0 вы можете спрятать/показать пункты в навигационном дереве).
  • и другие

Сейчас мы настроим эти дополнительные возможности в полной мере. Перейдите по ссылке http://localhost/phpmyadmin/chk_rel.php и кликните "Создать базу данных". После этого все новые функции будут активированы.

Несколько скриншотов новых функций:

1) Дизайнер

2) Слежение

10. Установка почтовой заглушки

В каталоге C:\Server\bin\ создайте новый каталог с названием Sendmail. Теперь в этом каталоге создайте файл sendmail.php со следующим содержимым:

#!/usr/bin/env php

Откройте конфигурационный файл PHP, он размещён здесь C:\Server\bin\PHP\php.ini . И добавьте туда одну строчку:

Sendmail_path = "C:\Server\bin\PHP\php.exe C:\Server\bin\Sendmail\sendmail.php --dir C:\Server\bin\Sendmail\emails"

Сохраните файл и перезапустите сервер. Отлично, теперь все отправленные письма будут сохраняться в каталоге C:\Server\bin\Sendmail\emails\

Письма будут иметь расширение .eml и их можно открывать, например, программой Thunderbird . Либо обычным текстовым редактором.

11. Добавление PHP директории в PATH на Windows

Если этого не сделать, то могут быть проблемы с некоторыми модулями PHP, в том числе с php_curl.dll, php_intl.dll, php_ldap.dll, php_pdo_pgsql.dll и php_pgsql.dll. По крайней мере, при запуске сервера каждый раз в логах появляется следующее:

PHP Warning: PHP Startup: Unable to load dynamic library "C:\\Server\\bin\\PHP\\ext\\php_curl.dll" - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library "C:\\Server\\bin\\PHP\\ext\\php_intl.dll" - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library "C:\\Server\\bin\\PHP\\ext\\php_ldap.dll" - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library "C:\\Server\\bin\\PHP\\ext\\php_pdo_pgsql.dll" - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library "C:\\Server\\bin\\PHP\\ext\\php_pgsql.dll" - \xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd.\r\n in Unknown on line 0

Чтобы избежать этих предупреждений, нужно добавить в системные переменные среды путь до PHP.

Нажмите кнопку Пуск (или как там она называется на Windows 10?), начните набирать «Изменение системных переменных среды » и откройте соответствующее окно настроек.

Там нажмите «Переменные среды »:

В окне «Системные переменные » найдите и кликните на Path , потом нажмите «Изменить »:

Поднимите запись в самый вверх:

Закройте все окна с сохранением сделанных изменений.

Перезапустите сервер.

12. Зависание, замедление трафика и/или ошибка сервера Asynchronous AcceptEx failed

Если ваш сервер даже без нагрузки «зависает» - не показывает веб-страницы до перезапуска, а в логах сервера ошибки Asynchronous AcceptEx failed:

AH00455: Apache/2.4.9 (Win64) PHP/5.5.13 configured -- resuming normal operations AH00456: Apache Lounge VC11 Server built: Mar 16 2014 12:42:59 AH00094: Command line: "c:\\Server\\bin\\Apache24\\bin\\httpd.exe -d C:/Server/bin/Apache24" AH00418: Parent: Created child process 4952 AH00354: Child: Starting 64 worker threads. (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed.

То в конфигурационный файл Apache добавьте:

AcceptFilter http none AcceptFilter https none EnableSendfile off EnableMMAP off

13. Настройка cURL в веб-сервере Apache на Windows

Если вы не знаете, что такое cURL, значит это вам не нужно. Т.е. смело пропускайте этот шаг.

cURL - это консольная утилита, которая позволяет обмениваться данными с удалёнными серверами, используя очень большое количество протоколов. cURL может использовать кукиз и поддерживает аутентификацию. Если для веб-приложения требуется cURL, то это должно быть указано в зависимостях. Для многих популярных приложений cURL не требуется, например, для phpMyAdmin и WordPress нет необходимости настраивать cURL.

Если cURL настроена неправильно, то вы будете получать ошибки:

Fatal error: Call to undefined function curl_multi_init() in …

Ошибка curl: SSL certificate problem: unable to get local issuer certificate

Чтобы cURL работала в Apache на Windows вам нужно:

1) Обязательно добавить PHP директорию в PATH (системные переменные среды). Как это сделать сказано чуть выше:

2) В файле C:\Server\bin\PHP\php.ini должна быть раскомментирована строка extension=curl

Обычно это не требуется, но при желании вы можете сделать резервную копию бинарных (исполнимых) файлов сервера. Все эти файлы находятся в папке C:\Server\bin\ . Это Apache, MySQL и PHP - т.е. программы, которые отвечают за работу сервера, но которые мы в любой момент можем скачать с официальных сайтов и вновь настроить.

Если вы хотите сделать их резервную копию (например, перед обновлением сервера), то остановите службы:

C:\Server\bin\Apache24\bin\httpd.exe -k stop net stop mysql

И скопируйте в безопасное место папку C:\Server\bin\ .

Кстати, вы можете скопировать весь сервер целиком, т.е. папку C:\Server\ - в этом случае одновременно получиться резервная копия и исполняемых файлов, и данных (базы данных, сайты).

Когда копирование завершено, вновь запустите службы:

C:\Server\bin\Apache24\bin\httpd.exe -k start net start mysql

15. Обновление сервера

Все компоненты, составляющие веб-сервер, активно развиваются и регулярно выходят новые версии. При выходе новой версии вы можете обновить один какой-то компонент (например, PHP), или сразу несколько.

Удаление сервера

Если сервер вам больше не нужен , либо вы хотите установить его заново, остановите службы и удалите их из автозапуска последовательно выполнив в командной строке:

C:\Server\bin\Apache24\bin\httpd.exe -k stop c:\Server\bin\Apache24\bin\httpd.exe -k uninstall net stop mysql c:\Server\bin\mysql-8.0\bin\mysqld --remove

Вы уже знаете о факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок . По итогам обучения выдаётся свидетельство установленного образца и сертификат . По специальная скидка на любые факультеты и курсы!

От автора: один знакомый (еще тот «кривых дел мастер») решил самостоятельно собрать шкаф. В результате после нескольких часов мучений у него получился только стол. Вот такая метаморфоза случилась. Чтобы не оказаться в подобной ситуации, рассмотрим, как установить PHP правильно.

Без чего не будет работать PHP

– не обычный язык, а серверный. Из-за этого простой установки интерпретатора языка будет мало. Чтобы вы смогли выполнять код на своем персональном компьютере, понадобится локальный сервер.

Подобного добра во всемирной паутине хватает. Перечислением достоинств и недостатков каждого из серверов мы заниматься не будем. Вместо этого опишем процесс установки проверенного временем варианта — Apache , который уже давно ассоциируется у всех с разработкой на PHP.

История данного продукта подробно описана в Википедии. Так как надежность Apache подтверждена многими годами «безжалостного» использования, то не будет на доказательство это растрачивать свое драгоценное время. Попытаемся самостоятельно установить PHP сервер на ПК под Винду.

Устанавливаем «индейца»

Рассмотрим поэтапную установку сервера из индейского племени Apache:

Заходим на Apache.org, в меню справа жмем на «Download». После этого в предоставленном списке зеркал выбираем любое и скачиваем инсталяху с расширением.msi (родной формат под Windows) и версией не ниже 2.2

Поскольку проект является open source, то сейчас «развелось» множество сборок этого сервера. Если не можете найти указанную, перейдите по этому адресу . Здесь на зеркале доступны для скачивания родные версии Apache.

После загрузки запускаем инсталляционный пакет на выполнение. Процедура установки стандартная: соглашаемся с условиями использования, указываем имя домена и сервера, «мыло» администратора. Затем «Next».

Указываем директорию, куда следует установить PHP сервер Apache.

И ждем, пока пройдет процесс инсталляции ПО. Переходим в директорию, куда установили Apache. В папке конфигураций находим httpd.conf и открываем его. Находим строчку «Deny from all» и комментируем эту директиву. Таким образом мы снимаем встроенную защиту сервера, которая не нужна для локального использования Apache. То есть открываем доступ ко всем папкам, в том числе и к виртуальным. Если этого не сделать, то программа при попытке доступа к любой из директорий выдаст «403» ошибку.

Сохраните все изменения и перезапустите сервер.

Переходим к PHP

Заходим на php.net и скачиваем одну из «86» версий дистрибутива (лучше защищенную). Затем распаковываем ее в отдельной папке на том же диске, где и сервер. Я не буду полностью описывать все параметры языка, которые можно изменить. Более подробно об этом можно прочитать в сопутствующей технической документации.

Хотелось бы отметить, что все настройки PHP задаются в файле php.ini. Он открывается с помощью любого редактора (в том числе и Блокнотом). Приведу описание нескольких часто используемых параметров, которые задаются через этот файл:

post_max_size – устанавливает максимальный объем данных, которые можно за раз обработать с помощью метода POST.

upload_max_filesize – максимальный размер файлов, которые можно загрузить.

default_charset – с помощью данного параметра можно в PHP установить по умолчанию кодировку utf 8.

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

LoadModule php5_module путь к инсталляции PHP/ php5apache2_2.dll – подключает библиотеку, с помощью которой дистрибутив будет использоваться в качестве модуля.

PHPIniDir «путь к файлу php.ini/» (например, PHPIniDir «F:/php-5.3.5/») – понятно без слов.

AddType application/x-httpd-php phtml php – настраивает соответствие между файлами PHP и mime-типом (application/x-httpd-php).

Ну как? Настройка требует времени, внимания и умения. А вы никогда не задумывались, что легче всего уже собранный «шкаф». Хотя в нашем случае под шкафом подразумевается уже готовый пакет ПО, в который входят и PHP, и сервер, и СУБД. Понятно, что речь идет о Денвере. Благодаря ему никакой «шкаф» не сможет превратиться под «умелыми» руками спеца в какой-нибудь «стол» или «тумбочку» .

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

  1. Создаем php-файл (имя может быть любое, но мы берем для примера myphpinfo.php), и добавляем в него следующие строки:
  2. Загружаем этот файл на сервер, где расположен ваш сайт (в корневую папку).
  3. Запускаем через браузер (вводим URL https://yoursitename.com/myphpinfo.php).
  4. В появившемся окне ищем путь к php.ini (для начала смотрим "Loaded Configuration File", если там написано "None", то смотрим "Configuration File (php.ini) Path").

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

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

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

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

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

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

Asp_tags = On ; Включает возможность выделять PHP-код, как это делается в ASP - <% %>

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_classes = ; После знака "равно" нужно через запятую записать классы, вызов которых вы хотите запретить (обычно это делается для безопасности)

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

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.cookie_lifetime = 0 ; Время жизни сессии ("0" - значит, что сессия живет, пока окно браузера не будет закрыто)

session.use_trans_sid = 1 ; Если пользователь отключил cookie, то во всех ссылках будет добавлен ID сессии

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

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 = ; Имя пользователя.

Mysql.default_password = ; Пароль.

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

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


order allow,deny
deny from all

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

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

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

Итак, если вы читаете этот пост, то либо вы первый раз устанавливаете PHP, либо у вас возникли вопросы/проблемы в процессе установки или настройки PHP. Я постараюсь как можно подробнее описать этот процесс.

Для начала нам нужен дистрибутив с самой свежей версией PHP. Его можно скачать с официального сайта – www.php.net (9.5 Mb).

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

Извлекаем содержимое архива в папку C:/php5 . Опять же, если вы первый раз устанавливаете связку Apache -PHP- MySQL рекомендую устанавливать по указанным мной путям.

Итак, в C:/php5 у вас должно находиться следующее:

Установка PHP завершена, теперь займемся его настройкой.

Переименуйте файл php.ini-recommended в php.ini :

  • выбираем файл
  • нажимаем F2
  • удаляем -recommended
  • нажимаем Enter.

Теперь откроем файл в блокноте и займемся настройкой PHP . Файл содержит в себе довольно большое количество настроек PHP, но нам они сейчас не нужны. Мы займемся лишь базовой настройкой, которая позволит нам запустить PHP на локальной машине.

Немного о формате описания в файле настроек

Символ ‘;’ означает, что строки закоментированы (они не будут учитываться). Например:

; ignore_user_abort = On

Как вы могли заметить настройки поделены на группы, для удобства поиска по файлу. Например, настройки управления ограничением ресурсов:

;;;;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;;;;

max_execution_time = 30 ; Maximum execution time of each script, in seconds (Максимальное время выполнения скрипта).
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) (Максимальное количество выделяемой для скрипта памяти).

Формат описания параметров и их значений:

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

Настройка модулей PHP.

Найдите секцию Dynamic Extensions (динамические расширения). Там представлен довольно большой список модулей для PHP:

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll

;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_pdo.dll

;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll

;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll

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

Для того чтобы подключить модуль нужно удалить перед строкой символ ‘;’. Тем самым мы раскомментируем строку и модуль будет использоваться.

Давайте подключим расширение PHP для работы с графикой – php_gd2.dll (оно нам понадобиться в будущем).

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

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; … or under UNIX:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.

; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.

extension_dir=”C:/php5/ext”

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

Сохраняем сделанные нами изменения. Чтобы сделанные нами настройки применились необходимо перезагрузить Apache .

Установка и настройка PHP завершена!

Как видите – ничего сложного. Если в процессе работы вам понадобятся другие расширения, просто раскомментируйте строку, с нужным вам расширением (аналогично с php_gd2.dll ) и перезагрузите Apache .

В следующем посте, я расскажу как заставить работать PHP и Apache в связке.