Засоби для роботи з файлами веб-додатків.

Далі ми встановимо PHP та налаштуємо веб-сервер на його використання. Розпаковуємо zip-архів (php-5.2.9-Win32.zip) у зручну для вас папку (найкраще в C:\php 5; я слідуватиму в статті тому, що розпакування було саме сюди, тому, якщо у вас PHP в іншому місці, то, відповідно, далі використовуйте ваш каталог). Заходьте в цю папку і перейменуйте файл php.ini-dist на php.ini . Відкривайте файл блокнотом або будь-яким текстовим редактором. Я вважаю, що стандартні налаштування досить хороші, треба лише виправити кілька директив. Спочатку треба вибрати місце на диску, де зберігатимуться документи сервера, тобто HTML-, PHP-файли і т.д. У попередній статті, про встановлення Apache, ми вибрали каталог C:\www\htdocs. Тоді нам необхідно у файлі php.ini виправити директиву

Doc_root =

Doc_root = "C:\www\htdocs"

Також обов'язково виправити extension_dir з

Extension_dir = "./"

;extension=php_mysql.dll ;extension=php_mysqli.dll

Якщо ви плануєте використовувати ще якісь модулі, то розкоментуйте їх також. Ось список основних модулів:

;extension=php_bz2.dll - для роботи з bz2-архівами (розпакування/упаковка засобами скриптів) ;extension=php_curl.dll - це curl-розширення; за допомогою нього можна, наприклад, зі скрипту надіслати POST-запит до іншого скрипту; extension = php_exif.dll - для роботи з додатковою інформацією у файлах фотографій; extension = php_gd2.dll - графічна бібліотека для генерації малюнків скриптами; - це бібліотека для роботи з багатобайтовими (у кодуванні Unicode) рядками, настійно раджу підключити, інакше деякі CMS можуть не працювати; extension = php_msql.dll - для роботи з БД mSQL; extension=php_mysql.dll – стандартна бібліотека MySQL; для версій MySQL 5 і старше краще використовувати модуль mysqli; extension = php_mysqli.dll - покращена (MySQL Improved) бібліотека для роботи з MySQL. Для роботи з MySQL5 краще використовувати саме її ;extension=php_pdo.dll - цей модуль, а також всі модулі PDO забезпечують уніфікований інтерфейс до багатьох баз даних. Але зокрема це корисно тим, що це (наскільки я знаю, принаймні зі стандартних) єдиний спосіб працювати з базами SQLite 3; extension = php_pgsql.dll - для роботи з СУБД PostgreSQL; сокетами зі скриптів; extension = php_sqlite.dll - для роботи з безсерверною БД SQLite. У цьому модулі підтримується тільки 2 версія файлів баз даних; extension = php_zip.dll - для роботи з zip-архівами (те ж саме що і для bz2)

Можна відразу розкоментувати ще кілька модулів, що часто використовуються.

Extension=php_gd2.dll extension=php_mbstring.dll

На цьому редагування php.ini завершуємо (не забудьте зберегти зміни!). Тепер із каталогу C:\php5 у каталог C:\WINNT\System32 скопіюйте файл libmysql.dll. Він потрібен для роботи PHP з MySQL. Або додайте через крапку з комою шлях C:\php5у змінну path - Властивості системи -> Додатково -> Змінні середовища -> Path. Щоб зміни, у разі, набули чинності - потрібно перевантажити комп'ютер.

Переходьте до каталогу C:\Program files\Apache2.2\confі відкривайте у текстовому редакторі файл httpd.conf.

Розкоментуємо додані у попередній статті рядки:

LoadModule php5_module "c:/php/php5apache2_2.dll" PHPIniDir "C:/WINNT"

Все, веб-сервер та PHP налаштовані для роботи разом. Обов'язково перезавантажте веб-серверщоб PHP заробив! Для цього використовуйте Монітор Apache (значок пера із зеленою стрілкою у системному треї)

Швидше за все при роботі зі скриптами вам потрібно буде змінити наступні налаштування в php.ini:

1. При встановленні скрипту іноді з'являється така помилка:

Помилковий error: Maximum execution time of 30 seconds exceeded in C:\блаблабла\файл.php on line 360

Виправити це можна змінивши max_execution_timeу php.ini

Max_execution_time = 60; Maximum execution time of each script, in seconds

на більше значення

Max_execution_time = 180

2. Якщо через скрипт будуть завантажуватися великі файли, наприклад, аудіо та відео файли, потрібно збільшити значення параметра upload_max_filesizeдо планованого вами розміру файлів

; Maximum дозволений розмір для завантажених файлів. upload_max_filesize = 100M

У цій статті ми розглянемо встановлення та налаштування Web-сервера Apache, PHP 5і СУБД MySQLдля використання їх на локальній машині під операційною системою Windows (2000 та XP). Використання локальних серверів може знадобитися з багатьох причин – вам необхідно вивчити PHP або MySQL, а тестування своїх Web-додатків на хостингу або дорого коштує, або такої можливості взагалі немає. В цьому випадку вам знадобиться зв'язка Apache+PHP+MySQL на локальній машині.

Для початку необхідно роздобути дистрибутиви серверів Apache і MySQL, а також архів PHP. Ми будемо встановлювати та налаштовувати Apache 2, MySQL 4 та PHP 5.

Також можете завантажити з нашого сайту файли php.ini для налаштування PHP та httpd.conf для Apache. Однак, робіть це тільки в крайньому випадку - якщо у Вас нічого не вийшло з "рідними" файлами, які з'явилися під час встановлення програм. Але в будь-якому випадку їх потрібно буде налаштувати під конкретну машину. Завантажити php.ini та httpd.conf

Завантажити Apache можна з дзеркал наведених на офіційному сайті http://www.apache.org/dyn/closer.cgi. При пошуку слід пам'ятати, що Apache може називатися httpd, на ім'я його демона в UNIX. На дзеркалах зазвичай багато різних файлів, наприклад:
httpd-2.0.49-win32-src.zip – це архів з вихідними кодами (src) для Windows (win32) Web-сервера Apache (httpd) версії 2.0.49.
httpd-2.0.49.tar.gz - те саме, але для Linux, в якому програми прийнято поширювати у вихідних кодах.
apache_2.0.50-win32-x86-no_ssl.exe – а ось це, відкомпільований під архітектуру (x86) для Windows (win32) без підтримки SSL(no_ssl) сервер Apache (apache) версії 2.0.50 – ось він і потрібен.

Зауваження

Бінарні коди дистрибутивів Apache поширюються в декількох варіантах, як з розширенням *.exe, так і *.msi і мають назву httpd_версія_win32_*_.msi.

Щоб вам не мучиться, ось ресурс, де можна його взяти: http://apache.rinet.ru/dist/httpd/binaries/win32/
Друга та третя цифра у версії можуть відрізнятися від наведених тут – слід вибирати останню версію, оскільки в ній усунуті помилки виявлені в попередніх версіях.

PHP 5 можна завантажити з нашого сайту.

Дистрибутив MySQL можна завантажити зі сторінки нашого сайту.

Повний довідковий посібник російською мовою можна знайти за адресою .

Після того, як ми запаслися всіма необхідними дистрибутивами, можна приступати до установки. Порядок встановлення Apache, PHP та MySQL не має значення. Почнемо з Web-сервера Apache.

Встановлення Web-сервера Apache

Запустіть інсталятор Web Apache. Результатом буде вікно з ліцензійною угодою, після прийняття якої слід перейти до наступного вікна з короткою інформацією про нововведення в другій версії Apache. Наступне вікно, показане на малюнку, дозволяє ввести інформацію про сервер: доменне ім'я сервера, ім'я сервераі адреса електронної пошти адміністратора. Якщо установка відбувається на локальну машину, то в поля для доменного імені та імені сервера слід ввести localhost(Див. малюнок.). У нижній частині вікна пропонується вибрати номер портуза яким сервер прийматиме запити (80 або 8080).


localhost- це ім'я для використання сервера на локальній машині, яке пов'язане з IP-адресою 127.0.0.1, яка зарезервована для локального використання.

Після цього буде запропоновано спосіб встановлення: стандартний ( Typical) або вибірковий ( Custom), що дозволяє вибрати компоненти сервера вручну. Наступне вікно дозволяє вибрати каталог установки сервера, за замовчуванням це C: Program FilesApache Group, але ми рекомендуємо вибрати інший каталог, наприклад, С: www. Після цього майстер установки повідомить про готовність до процесу встановлення та після натискання кнопки Install, буде зроблено копіювання файлів сервера. Якщо інсталяція пройшла успішно, Windows автоматично запустить Apache.

Після успішної інсталяції під час набору у вікні браузера http://localhost/ або http://127.0.0.1/ - має завантажитися сторінка сервера.

Тепер необхідно навчитися керувати Apache, а саме навчиться запускати, зупиняти та перезапускати сервер. Існує багато способів здійснити ці операції: за допомогою утиліти ApacheMonitor, використовуючи консоль керування сервісів Windows, використовуючи пункти меню Пуск, з командного рядка… Ми розглянемо консоль керування сервісів Windows, що дозволяє налаштувати Apache для автоматичного старту під час запуску системи. Для запуску консолі керування виконайте команду
Пуск->Налаштування->Панель управління->Адміністрація->Служби.
У вікні консолі, що з'явилося, на наведеному нижче малюнку, слід вибрати сервіс Apache2. Контекстне меню, що відкривається після натискання на правій кнопці, дозволяє здійснювати запуск, зупинку та перезапуск сервісу.


Служби Windows дозволяють здійснювати запуск фонових програм під час старту системи. Для цього необхідно перейти у вікно Властивості, вибравши пункт меню сервісу пункт Властивостіі у вікні, що з'явилося, у випадаючому списку " Тип запуску" вибрати пункт " Авто".

Конфігурація Apache

Web-сервер - складний програмний продукт, що працює на різних платформах і в різних операційних системах по всьому світу. Тому для коректної роботи на встановленій системі його потрібно налаштувати (конфігурувати).
За промовчанням налаштування Apache розташовані у файлі httpd.conf у директорії conf. Далі будуть описані основні директиви файлу httpd.conf та їх загальновживані значення.

Шляхи до файлів

У конфігураційних файлах Apache та PHP Вам часто доведеться вказувати шляхи до різних директорій та папок. У операційних системах UNIX і Windows застосовуються різні роздільники каталогів. У UNIX використовується пряма коса риса "/", наприклад /usr/bin/perl, у Windows зворотна, наприклад, c:Apachein. Взагалі, у деяких директивах Apache і PHP працюють обидва види роздільників каталогів: прямий (/) і зворотний (), але так як і Apache і PHP спочатку розроблялися під UNIX, то застосовуючи їх "рідний" формат, Ви зможете уникнути низки проблем . Тому шляхи в настроювальних файлах (httpd.conf і php.ini) рекомендується писати через сліш у форматі UNIX - "/". Наприклад:

ScriptAlias ​​"/php_dir/" "c:/php/"

Директиви файлу httpd.conf

Port

Port 80

Встановлює порт TCP, який використовується Apache для встановлення з'єднання. За замовчуванням використовується 80 портів.

Примітка

Єдина причина використання нестандартного порту - відсутність прав використання стандартного порту. При використанні нестандартного порту, наприклад, номер порту 8080 слід вказувати в адресі, наприклад: http://localhost:8080/.

ServerAdmin

ServerAdmin [email protected]

Містить e-mail-адресу адміністратора web-сервера, яка відображатиметься при помилках роботи сервера.

ServerName

ServerName myserver

Містить ім'я комп'ютера для сервера.

ServerRoot

ServerRoot "C:/Apache2"

Вказує на каталог, який містить файли WEB-сервера Apache.

Примітка

Не плутайте директиву ServerRoot із директивою DocumentRoot, яка вказує каталог для файлів WEB-сайту.

DocumentRoot

DocumentRoot "C:/Apache2/htdocs"

Визначає каталог, в якому розміщено файли WEB-сайту.

Контейнер

Сфера дії директив усередині цього контейнера поширюється на всі файли та підкаталоги всередині DocumentRoot.


Options FollowSymLinks Includes Indexes
AllowOverride All

  • Директива AllowOverride встановлена ​​на All дозволяє перевизначати значення головного конфігураційного файлу httpd.conf у файлах.htaccess.
  • Директива Options FollowSymLinks дозволяє Apache слідувати символічним посиланням.
  • Директива Options Includes дозволяє виконувати директиви SSI (Server Side Includes) у коді сторінок веб-сайту.
  • Директива Options Indexes вказує, що потрібно повертати вміст каталогу, якщо відсутній індексний файл.

DirectoryIndex

DirectoryIndex index.html index.phtml index.php

Містить список індексних файлів, які слід відображати під час звернення до директорії без вказівки імені файлу (наприклад, http://localhost/test/).

AddDefaultCharset

AddDefaultCharset windows-1251

Встановлює стандартне кодування, якщо кодування не встановлено в заголовку HTML-документа. Також Вам може знадобитися вказувати значення кодування KOI8-R.

Створення віртуальних хостів

На одному WEB-сервері Apache можна встановити декілька веб-сайтів. Ця функція сервера називається віртуальним хостингом. Нижче розглянемо створення віртуальних вузлів з урахуванням імен. Віртуальні вузли зазвичай розташовані наприкінці файлу httpd.conf.

Спочатку потрібно вказати, яка IP-адреса використовується для віртуальних хостів.



# Директиви віртуального хоста

Файл httpd.conf. Контейнер


ServerAdmin webmaster@may_domain.ru
DocumentRoot c:/www/mysite
ServerName www.mysite.ru
ServerAlias ​​www.site.ru www.host2.ru
ErrorLog logs/mysite-error.log
CustomLog logs/mysite-access.log common

Розглянемо директиви віртуального вузла:

  • DocumentRoot вказує каталог, де розташовані файли (сторінки) даного віртуального вузла (WEB-сайту)
  • ServerName вказує ім'я віртуального вузла, до якого можна звернутися. В даному випадку, за адресою http://www.mysite.ru/.
  • ServerAlias ​​містить псевдоніми імен віртуального вузла. В даному випадку до віртуального вузла можна звернутися, використовуючи імена: http://www.site.ru/ і http://www.host2.ru/.
  • ErrorLog та CustomLog вказує імена логів сервера для цього віртуального хоста.

Контейнери зазвичай розміщують один за одним наприкінці файлу httpd.conf.

Файл httpd.conf. Налаштування віртуальних хостів

NameVirtualHost 127.0.0.1:80

# Директиви віртуального хоста 1


# Директиви віртуального хоста 2


# Директиви віртуального хоста 3

Примітка

Для застосування змін, які вносяться до файлу httpd.conf, Apache слід перезавантажити.

Для того, щоб звертатися до віртуальних вузлів за іменами, їх слід прописати до баз даних DNS-сервера. Якщо ви використовуєте Apache для тестування файлів на локальній машині, імена ваших віртуальних вузлів слід прописати у файлі hosts. Для Windows 2000 і XP він розташований у каталозі C:WindowSystem32Driversets. Файл hosts містить такі записи:

Формат записів файлу hosts

127.0.0.1 www.mysite.ru
127.0.0.1 www.site.ru
127.0.0.1 www.host2.ru

Встановлення та налаштування PHP

Для встановлення PHP слід створити каталог c:/php та розмістити в ньому файли із zip-архіву дистрибутива. Після цього слід перейменувати конфігураційний файл php.ini-dist на php.ini і скопіювати його в директорію Windows.

Встановлення PHP як модуль

Встановлення PHP як модуль трохи підвищує швидкодію, оскільки модуль PHP завантажується один раз при запуску Web-сервера

Зауваження

При встановленні PHP як модуль налаштування з php.ini читаються один раз при запуску Web-сервера. Тому при внесенні змін до php.ini необхідно перевантажити Apache для того, щоб внесені зміни набули чинності.

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

Файл httpd.conf. Підключення PHP як модуль Apache


LoadModule php5_module c:/php/php5apache2.dll

Примітка

Установка PHP, як CGI-програми

При встановленні PHP, як CGI-програми інтерпретатор PHP буде завантажуватися щоразу при виклику PHP-сценарію. У зв'язку з цим, можливо, деяке погіршення швидкодії. Якщо PHP встановлений як CGI, то при внесенні змін до файлу php.ini Apache перезавантажувати не слід, оскільки установки читаються щоразу при виконанні PHP-сценарію. Встановлення PHP як CGI трохи прискорює внесення змін до конфігурації PHP, так вона не потребує перезавантаження WEB-сервера.

Примітка

При встановленні PHP, як CGI перестануть працювати деякі заголовки, наприклад, Ви не зможете організувати авторизацію користувачів засобами PHP. Авторизації можна буде реалізувати лише засобами Apache за допомогою файлів.htaccess.

Для встановлення PHP відкрийте головний файл налаштування httpd.conf на редагування, знайдіть у ньому закоментовані рядки підключення PHP і змініть їх наступним чином:

Файл httpd.conf. Підключення PHP як CGI

AddType application/x-httpd-php phtml php

Options ExecCGI

ScriptAlias ​​"/php_dir/" "c:/php/"
Action application/x-httpd-php "/php_dir/php-cgi.exe"

Примітка

Замість директорії c:/php підставте Вашу директорію із встановленим PHP.

Конфігурування PHP (файл php.ini)

Так як на локальній машині ви, швидше за все, будете зайняті тестуванням Ваших Web-додатків, необхідно належним чином налаштувати конфігураційний файл php.ini. Знайдіть директиву error_reporting і встановіть для неї таке значення:

Це значення налаштує PHP таким чином, що під час роботи PHP-скриптів будуть відображатися всі помилки, а "зауваження" ігноруватимуться. Також необхідно простежити, щоб директива display_errors, була включена:

Display_errors = On

Якщо ця директива вимкнена (Off), то повідомлення про помилки не будуть виводитись у вікно браузера і у разі виникнення в коді помилки ви будете ворожити перед незайманим білим вікном - що б це означало.
Також необхідно простежити, щоб директива variables_order мала таке значення:

Variables_order = "EGPCS"

Літери тут означають таке:
E - змінними середовища
G - змінними передаються за методом GET (G)
P - змінними передаються за методом POST (P)
C - Cookies
S - сесії
Відсутність будь-якої з букв не дозволить вам працювати з відповідними змінними.

Наступна директива, яка може вимагати налаштування – це register_globals. Якщо ця директива включена

Register_globals = On

то змінні передані метором GET, POST, через cookies та сесії можна використовувати в PHP-скрипті, звертаючись до них просто як звичайним змінним $someone.
Якщо ця директива вимкнена

Register_globals = Off

то до таких змінних можна буде звертатися лише за допомогою суперглобальних масивів ($_POST, $_GET тощо).
Директива register_long_arraysдозволяє використовувати суперглобальні масиви у старому форматі ("довгому" - $HTTP_GET_VARS, $HTTP_POST_VARS і т.д.)

Register_long_arrays = On

Тепер потрібно налаштувати індексний файл. Якщо у вікні браузера набрати рядок http://localhost/, а чи не http://localhost/index.html. Сервер все одно надасть браузеру index.html, тому що цей файл є індексним і шукається в директорії насамперед, якщо не вказано конкретний файл. Тепер необхідно налаштувати http.conf, таким чином, щоб Web-сервер Apache також реагував на файли index.php. Для цього знайдіть у http.conf директиву DirectoryIndex і виправте її так:

DirectoryIndex index.html index.html.var index.php

Після цього необхідно перевантажити сервер Apache, а в кореневому директорії віртуального хоста ("C:/www/scripts") створити пробний файл PHP (index.php):

phpinfo();
?>

У разі успішного налаштування звернення за адресою http://localhost/index.php відобразить фіолетову таблицю з поточними налаштуваннями PHP, яка видається функцією phpinfo().
Таким чином, у нас налаштована зв'язка Apache та PHP і можна переходити до налаштування MySQL. Розпакуйте дистрибутив MySQL у тимчасову директорію та запустіть інсталятор. Контролювати роботу сервера MySQL можна так само, як і Apache, використовуючи консоль управління сервісів Windows.

Підключення MySQL

Детальна методика підключення до PHP розширення MySQL описана у статті за посиланням: .

Якщо сервер MySQL вже встановлено на Вашій машині, наступним кроком буде налаштування PHP для роботи з базами даних MySQL.

Відкрийте на редагування файл php.ini із каталогу Windows. Для підключення бібліотеки розширення MySQL Вам потрібно забрати символ коментаря; (точка з комою) з рядка:

Extension=php_mysql.dll

Також перевірте значення директиви extension_dir

Extension_dir = "c:/php-5.0/ext"

Вона повинна вказувати на каталог, де зберігаються розширення PHP. Розділювачі каталогів рекомендується писати у форматі UNIX (/) - зворотний сліш. Однак, якщо нічого не виходить, просто відкотіть назад значення директиви extension_dir, а бібліотеку php_mysql.dll скопіюйте в корінь C:/php-5.0/ - в більшості випадків це має допомогти.

Якщо PHP Вас підключено як модуль, Вам також необхідно скопіювати бібліотеку libmysql.dll з каталогу з встановленим PHP в системний каталог C:/Windows/System32. Щоб внесені зміни набули чинності, перезавантажте Apache.

Для перевірки роботи MySQL перезапустіть сервер Apache та створіть перевірочний скрипт з наступним кодом:

$dblocation = "127.0.0.1";
$ dbname = " test " ;
$dbuser = "root";
$dbpasswd = "";

$dbcnx = @ mysql_connect ($dblocation, $dbuser, $dbpasswd);
if (! $ dbcnx )
{
echo "

На жаль, недоступний сервер mySQL

" ;
exit();
}
if (! @
mysql_select_db ($dbname, $dbcnx))
{
echo "

На жаль, не доступна база даних

"
;
exit();
}
$ver = mysql_query ("SELECT VERSION()");
if(! $ver )
{
echo "

Помилка у запиті

"
;
exit();
}
echo
mysql_result ($ver, 0);
?>

У разі успішної інтеграції MySQL у зв'язку Apache та PHP, звернення до перевірочного скрипту виведе у вікно браузера версію сервера MySQL.

У нових версіях MySQL (починаючи з 4.1.0) змінився порядок роботи з національними кодуваннями, тому старий код може викликати появу в таблиці бази даних знаків питання "?????????" замість російського тексту. Для того, щоб цього не виникало на початок PHP-скрипту, після встановлення з'єднання з базою даних, слід розмістити наступні рядки:

mysql_query ( "set character_set_client="cp1251"");
mysql_query ( "set character_set_results="cp1251"");
mysql_query ( "set collation_connection="cp1251_general_ci"");
?>

Встановлення розширень PHP

Наостанок вам можливо знадобиться налаштувати деякі розширення PHP, вони налаштовуються так само, як і MySQL.

Так щоб підключити графічну бібліотеку GDLib в php.ini необхідно розкоментувати рядок:

Extension=php_gd2.dll

Перевірте наявність даної бібліотеки в папці c:phpext. Після внесення змін до php.ini перезапустіть сервер. Щоб швидко перевірити: чи підключилася бібліотека - виконайте функцію phpinfo(). Якщо все гаразд, то в таблиці, яка відображається функції phpinfo(), повинен з'явитися розділ " gd

При використанні застарілого імені php.exe, що використовувався в попередніх версіях замість php-cgi.exe також можлива поява помилки:

403 Forbidden You don"t have permission to access /__php_dir__/php.exe/test.php on this server

HTML-файли виконуються, а PHP-скрипти немає

При ненастроєному підключенні PHP при зверненні до файлів з розширенням php, наприклад: http://localohost/index.php відкривається вікно із запитом на завантаження такого файлу. Це говорить про те, що не налаштовано обробку файлів з розширенням php. Перевірте наявність наступного рядка у файлі httpd.conf:

AddType application/x-httpd-php phtml php

Notice: Undefined variable...

На новому, щойно встановленому, PHP можна часто бачити повідомлення виду:

Notice: Undefined variable: msg в C:/Main/addrec.php on line 7

Error_reporting = E_ALL & ~E_NOTICE

Не підключається MySQL

Іноді виникають проблеми із встановленням MySQL. Слід проконтролювати запускається MySQL як сервіс щоразу при старті системи. Для цього відкрийте консоль сервісів:

Пуск | Налаштування | Панель керування | Адміністрація | Служби

знайдіть там MySQL – запустіть. Щоб сервер стартував при кожному завантаженні системи натисніть праву кнопку миші на сервісі і виберіть "Властивості" - у списку "Тип запуску", що відкривається, виберіть пункт "Авто".

Якщо під час запуску Apache та при зверненні до скриптів видається повідомлення про неможливість завантаження бібліотеки php_mysql.dll.

PHP startup: Безкоштовно load dynamic library c:/php/ext/php_mysql.dll
- не знайдено вказаний модуль

То ще раз повірте інструкції з розділу, де описується підключення до PHP бібліотеки для роботи з MySQL. Ви використовуєте "правильну" версію файлу php_mysql.dll (саме для тієї версії PHP, яка встановлена ​​в системі)?
Версії файлу php_mysql.dll розрізняються для різних версій PHP, хоча і мають одну й ту саму назву.

  • Використання роздільників каталогів у форматі Windows (зворотний сліш): c:apache/bin. Для надійної роботи слід використовувати роздільники у форматі UNIX (прямий сліш), наприклад: c:/apache/bin.
  • Існує декілька настроювальних файлів php.ini на машині, або відсутність такого файлу. Потрібний файл php.ini має лежати у директорії Windows. Проведіть пошук по дисках комп'ютера, знайдіть усі зайві версії файлів та видаліть їх.
  • Будь-які питання, що виникають по встановленню зв'язки Apache+PHP+MySQL, ви можете задати на нашому форумі присвяченому встановленню та налаштуванню Apache, PHP і бібліотек розширень .


    Пряме посилання: php-5.3.10-Win32-VC9-x86.zip
    Заодно скачайте відразу документацію російською у форматі.chm, вона вам знадобиться при вивченні та роботі: php_enhanced_ru.chm

    Розпакуйте архів у бажаний каталог (спочатку пропонується "C:\php"). Відкрийте конфігураційний файл, що містить рекомендовані налаштування - "php.ini-development" (що знаходиться в корені дистрибутива), перейменуйте його на php.ini і зробіть наступні зміни.

    Редакція php.ini:

    1. Знайдіть рядок:
      post_max_size = 8M
      Збільште до 16 Мбайт максимальний розмір даних, що приймаються методом POST, змінивши її на:
      post_max_size = 16M
    2. Знайдіть рядок:
      ;include_path = ".;c:\php\includes"
      Розкоментуйте її, прибравши перед рядком символ крапки з комою.
      (Увага виняток! Зворотні косі риси при вказівці шляху):
      include_path = ".;c:\php\includes"
      Створіть порожній каталог "C:\php\includes", для зберігання класів, що підключаються.
    3. Знайдіть рядок:
      extension_dir = "./"
      Встановіть значення цієї директиви шлях до папки з розширеннями:
      extension_dir = "C:/php/ext"
    4. Знайдіть рядок:
      ;upload_tmp_dir =
      Розкоментуйте її та вкажіть у значенні наступний шлях:
      upload_tmp_dir = "C:/php/upload"
      Створіть порожню папку "C:\php\upload" для зберігання тимчасових файлів, що завантажуються через HTTP.
    5. Знайдіть рядок:
      upload_max_filesize = 2M
      Збільште максимально допустимий розмір файлів, що завантажуються до 16 Мбайт:
      upload_max_filesize = 16M
    6. Підключіть, розкоментувавши, дані бібліотеки розширень:
      extension=php_bz2.dll
      extension=php_curl.dll
      extension=php_gd2.dll
      extension=php_mbstring.dll
      extension=php_mysql.dll
      extension=php_mysqli.dll
    7. Знайдіть рядок:
      ;date.timezone =
      Розкоментуйте та встановіть часовий пояс вашого місцезнаходження (список часових поясів можна знайти в документації):
      date.timezone = "Europe/Moscow"
    8. Знайдіть рядок:
      ;session.save_path = "/tmp"
      Розкоментуйте та встановіть значенням цієї директиви такий шлях:
      session.save_path = "C:/php/tmp"
      Створіть пусту папку "C:\php\tmp" для зберігання тимчасових файлів сесій.
    Збережіть зміни та закрийте файл php.ini.

    Далі необхідно додати каталог із встановленим PHP інтерпретатором до PATH операційної системи. Для чого пройдіть шляхом "Start" ("Пуск") -> "Control Panel" ("Панель управління") -> "System" ("Система"), відкрийте вкладку "Advanced" ("Додатково"), натисніть кнопку " Environment Variables" ("Змінні середовища"), у розділі "System Variables" ("Системні змінні") зробіть подвійне клацання на рядку "Path", додайте в поле "Variable Value" ("Значення змінної"), до того що там вже існує шлях до каталогу з встановленим PHP, наприклад, "C:\php" (без лапок). Зверніть увагу на те, що символ точки з комою розділяє шляхи. Щоб внесені зміни набули чинності, перезавантажте операційну систему.

    Приклад рядка Path:
    %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\php;C:\Program Files\MySQL\MySQL Server 5.5\bin

    Встановлення та налаштування PHP інтерпретатора завершено.

    Опис бібліотек, що підключаються:

    php_bz2.dll– За допомогою цього розширення PHP зможе створювати та розпаковувати архіви у форматі bzip2.

    php_curl.dll– Дуже важлива та потрібна бібліотека, що дозволяє з'єднуватись та працювати з серверами, за допомогою величезної кількості інтернет-протоколів.

    php_gd2.dll– Ще одна незамінна бібліотека, яка дозволяє працювати з графікою. Ви думали на PHP можна тільки HTML сторінки генерувати? А ось і ні! За допомогою PHP можна майже все, в тому числі малювати.

    php_mbstring.dll– Бібліотека містить функції для роботи з багатобайтними кодуваннями, до яких належать кодування східних мов (японська, китайська, корейська), Юнікод (UTF-8) та інші.

    php_mysql.dll– Ім'я бібліотеки говорить саме за себе – вона необхідна для роботи з сервером MySQL.

    php_mysqli.dll– Ця бібліотека є розширенням попередньої та містить додаткові функції PHP для роботи з сервером MySQL версії 4.1.3 та вище.

    Даних бібліотек має вистачити для повноцінної роботи PHP. З часом, якщо з'явиться така необхідність, ви зможете підключити додаткові бібліотеки, але не варто підключати їх все відразу з думкою, що кашу олією не зіпсуєш, у цьому випадку надмірна кількість підключених бібліотек може помітно уповільнити роботу PHP.

    «

    Якщо запитати веб-програміста, який з усіх файлів дистрибутива PHP є найголовнішим, багато хто може відповісти, що сам інтерпретатор, бібліотеки, розширення і т.д. всі налаштування РНР (директиви), конфігурації модулів розширення та змінні середовища. Через файл конфігурації можна налаштувати РНР на максимальну швидкодію, відключити потенційно небезпечні функції та модулі, ну і, звичайно, при невдалому налаштуванні порушити роботу всієї системи (ні, не всього сервера, максимум веб-сервера та РНР).

    Але значення системних змінних можна встановити не тільки через php.ini, але й інші методи, щоправда, з обмеженнями. Для цього слід коротко розглянути механізм обробки конфігураційних файлів середовищем РНР.

    По-перше, у найпростішому випадку, коли РНР працює як CGI-додаток, файл перечитується щоразу при запуску інтерпретатора. Якщо він підключається як SAPI-модуль до сервера Apache, тоді шлях до файлу визначається директивою PHPIniDir конфігурації сервера.

    Якщо після цього конфігураційний файл не знайдено, його пошуки продовжуються у наступних місцях: для Win32-сервера перевіряється ключ у реєстрі HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath, далі файл шукається в поточному каталозі, звідки запущений інтерпретатор (php-cli). кореневої директорії веб-сервера (для SAPI-модуля) або кореневої директорії РНР. Потім пошук продовжується в системних директоріях (C: WINDOWS, C: WINXP, C: SYSTEM32) і в директорії, заданої на етапі зборки РНР опцією "--with-config-file-path".

    Крім цього, самі опції можуть вказуватися в різних файлах, наприклад у файлах конфігурації сервера Apache (httpd.conf), у файлах. у самих РНР-скриптах через виклик функції ini_set(). Залежно від того, де і яким чином встановлюється змінна, вона матиме різний ефект – для поточного скрипту, окремого сайту чи директорії, всього сервера до перезавантаження.

    Навіщо така різноманітність? Дуже просто. Наприклад, у типовій ситуації, коли ваш сайт розташовується на віртуальному хостингу, ви позбавлені можливості переналаштувати конфігурацію РНР для себе, в той же час для нормальної роботи скриптів вам необхідно встановити деякі змінні, відмінні від установок хостера. Тоді ви просто встановлюєте в директоріях свого сайту файл php.ini, в якому прописуєте всі потрібні вам налаштування. Якщо необхідно змінити всього одну-дві змінні, це можна зробити через виклик функції ini_set() на початку скрипта. Але зверніть увагу на один момент. Так як ini_set() є РНР-функцією і, відповідно, виконується вже після ініціалізації інтерпретатора, деякі установки будуть проігноровані, так як впливають на роботу тільки в початковому етапі запуску РНР. Не переживайте, такі параметри, як і помилкові (синтаксично) неправильні, будуть просто проігноровані та не призведуть до будь-яких наслідків у роботі.

    Наведемо практичний приклад. Є така директива, error_reporting, яка вказує на ступінь деталізації виведення повідомлень про помилки під час інтерпретації РНР-скрипту. Її можна налаштувати висновок як всіх повідомлень, і просто попереджень, які впливають роботу програми. Ви можете собі переналаштувати її, наприклад, дозволяючи показувати лише критичні для виконання помилки. У такому разі змінна повинна містити значення "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR" – тобто виводити помилки компілятора, критичні помилки середовища та ядра. Встановити змінну можна за допомогою виклику функції ini_set(), яка приймає два рядкові параметри: перший рядок описує назву опції, а другий – нове значення. У нашому випадку це: ini_set("error_reporting", "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR");. Ось і все, в результаті РНР буде при кожному запуску вашого скрипту використовувати нове значення змінної error_reporting, для решти користувачів залишиться значення за умовчанням, описане в php.ini.

    Перш ніж замінювати змінне середовище, бажано перевірити його поточне значення – це робиться за допомогою виклику функції ini_get()яка приймає один параметр, рядок з ім'ям змінної, і повертає рядок з його поточним значенням. У нашому прикладі код echo ini_get("error_reporting");поверне E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR, тобто щойно встановлене значення, в той же час, якщо викликати ini_get() до встановлення нового значення, ми отримаємо щось на зразок E_ALL & ~E_NOTICE (на різних хостингах може відрізнятись) – виводити повідомлення про всі помилки, крім попередження.

    Але, перш ніж встановлювати змінні, бажано орієнтуватись у структурі файлу php.iniта у доступних параметрах. На цю тему мало інформації, крім коментарів у самому php.ini, так що ми постараємося докладно описати найважливіші змінні, з якими вам доведеться мати справу.

    Загальна структура файлу php.ini дуже проста. Ділиться весь файл на секції, кожна секція групує змінні, що відносяться до будь-якого модуля або всього середовища РНР в цілому. У кожній секції змінні (директиви) задаються як ім'я_змінної = значення, де значенняможе бути як довільним рядком (якщо вона містить прогалини, то полягає в подвійні лапки), так і значенням Оn/Оff(Тоді таку змінну називають ще прапором). Змінні задаються по одному в рядку, а всі рядки, що починаються зі знака " ; Пам'ятайте, що імена директив чутливі до регістру і в основному пишуться малими літерами.

    Назва секції полягає у квадратних дужках. Наприклад, першою йде секція загальних установок середовища – . Секція модуля ODBC для зв'язку з базами даних має назву, налаштування доступу до MySQL виробляються в секції, а новий інтерфейс MySQLI налаштовується, параметри сесій вказуються в секції. Кожна секція, виключаючи загальносистемну, відповідає якомусь розширенню, якщо воно, звичайно, потребує налаштування.

    Поки почнемо з директив, що описуються у секції . Ми будемо розглядати конфігурацію РНР версії 5.0.х, так що якщо у вас більш рання версія, деякі директиви можуть бути відсутніми.

    engine =- Прапор, що дозволяє роботу РНР на сервері Apache. За замовчуванням вона завжди встановлена ​​на значення On.

    zend.ze1_compatibility_mode =— директива з'явилася в РНР 5.0 і дозволяє переключитися на режим сумісності зі скриптами, написаними для попередніх версій. Якщо ви налаштовуєте РНР під себе і вам не потрібно підтримувати сумісність, встановіть прапорець у Off, якщо ж РНР налаштовується для спільного сервера, то логічно дозволити користувачам запускати всі скрипти, написані з урахуванням ядра Zend I (PHP 4.х).

    short_open_tag =— РНР вміє розпізнавати кілька різних тегів початку та кінця блоку програми. Цей прапор дозволяє використовувати короткий запис виду.

    precision =- Вказує, скільки значущих цифр повинен враховувати РНР при операції з дробовими числами. За замовчуванням використовується 12 знаків, чого цілком достатньо.

    output_buffering =— дозволяє буферизацію виведення всім сторінок чи встановлює розмір буфера в байтах (якщо значення – ціле число, наприклад 4096, встановлює розмір буфера 4 Кб). Застосовується для тимчасової буферизації HTTP-заголовків та cookie перед надсиланням клієнту решти контенту.

    output_handler =— дозволяє вказати функцію для перенаправлення виводу сторінки. Одночасно, якщо встановлено функцію, включається директива output_buffering. Можна використовувати для перекодування контенту, що генерується, стиснення, кешування або іншої пост-обробки. Якщо директива не використовується, надайте їй порожнє значення (порожній рядок або none).

    safe_mode =— перемикає РНР у спеціальний захищений режим роботи, який має підвищену безпеку, а й накладає обмеження на програмування. Може бути дуже корисним при створенні систем з підвищеною захищеністю. З цією директивою пов'язано ще кілька інших з назвою, яка починається з safe_mode_, що задають конкретні обмеження та додаткові перевірки. За промовчанням директива має значення Off.

    disable_functions =— задає перелік функцій, використання яких заборонено у скриптах користувача. Може застосовуватися для додаткового забезпечення безпеки, блокуючи потенційно небезпечні функції (наприклад, дзвінки). Для завдання функцій перерахуйте їх у подвійних лапках через кому. Наприклад, "exec, php_info, file, ini_set" забороняє виклики функцій exec(), php_info(), file(), ini_set(). Але встановлювати цю директиву можна лише доініціалізації РНР, тобто у файлі php.ini чи httpd.conf.

    max_execution_time =- Вказує час у секундах, протягом якого можна виконувати один скрипт. У разі перевищення ліміту виконання скрипту примусово завершується з помилкою. Це може стати в нагоді для примусової зупинки неправильно написаних програм, які заважатимуть нормальній роботі сервера. У той же час не слід встановлювати надто маленький час, тому що у випадку роботи з віддаленими хостами, базами даних або файлами відведений час може закінчитися до того, як скрипт відпрацює.

    max_input_time = [-1/ціле число]- Вказує час у секундах, протягом якого скрипт може виводити дані. Бажано не встановлювати його менше за директиву max_execution_time. Якщо скрипт інтенсивно виводить дані, наприклад у циклі щось обробляє і виводить великі фрагменти тексту, то директиві слід надавати великі значення або ж не встановлювати зовсім - тоді єдиним обмеженням буде загальний час виконання скрипту. Директиву можна встановити лише за допомогою php.ini.

    memory_limit =- Встановлює розмір оперативної пам'яті, що виділяється для одного скрипта. Префікс М показує, що розмір вказується в мегабайтах, а К – Кб. Для громадського сервера (наприклад, віртуального хостингу) можна встановити менше значення, але, якщо потрібно проводити інтенсивні обчислення чи планується запуск серйозних комерційних програм, значення можна збільшити (залежить від обсягу RAM на сервері).

    display_errors =- дозволяє виводити користувачеві повідомлення про помилки середовища виконання та попередження РНР. Я рекомендував би завжди включати цю директиву не тільки в режимі налагодження, але і в реальній роботі, а більш точно налаштовувати деталізацію виводу за допомогою опції error_reporting.

    error_reporting = [набір зумовлених констант]- Вказує бажану деталізацію повідомлень про помилки та збої в роботі інтерпретатора.

    Константи можуть об'єднуватися за допомогою бітових операторів додавання. Найбільш важливі константи: E_ALL (всі помилки і попередження), E_COMPILE_ERROR (фатальні помилки компілятора), E_CORE_ERROR (фатальні помилки при ініціалізації ядра РНР), E_ERROR (фатальні помилки етапу виконання), E_PARSE (помилки E виконання, не критичні до роботи скрипта).

    Для налагодження скрипта бажано встановити максимальну деталізацію повідомлень, наприклад error_reporting = E_ALL, у реальній роботі бажано виключити попередження, що не впливають на роботу, наприклад error_reporting = E_COMPILE_ERROR|E_CORE_ERROR|E_ERRORпокаже лише фатальні помилки (інший варіант: error_reporting = E_ALL & ~E_NOTICE & ~ E_WARNING).

    Конфігураційний файл php.ini є основним інструментом налаштування ядра PHP. Він вважається щоразу при ініціалізації PHP. Якщо зміна не відображається, не забудьте зупинити та перезапустити httpd . Якщо внесені зміни досі діють, використовуйте функцію phpinfo() , щоб перевірити, де php ini лежить.

    Файл конфігурації добре прокоментований та детально опрацьований. Параметри чутливі до регістру, значення ключових слів немає; пробіли та рядки, що починаються з крапки з комою, ігноруються. Логічні значення можуть бути представлені як 1/0, Yes/No, On/Off або True/False. Значення за промовчанням в php.ini вплинуть на установку PHP, яку можна буде налаштувати пізніше.

    У цій статті ми розглянемо важливі налаштування файлу php.ini, які можуть знадобитися для PHP парсера.

    short_open_tag = Off

    Короткі відкриті теги виглядають так:. Для цього параметра має бути встановлено значення Off, якщо ви хочете використовувати функції обробки XML.

    safe_mode = Off

    Якщо цей параметр має значення ON, ймовірно, ви скомпілювали PHP з прапором enable-safe-mode. Безпечний режим найбільш важливий для використання CGI.

    safe_mode_exec_dir =

    Ця опція має значення лише в тому випадку, якщо увімкнено безпечний режим. Вона також може бути встановлена ​​з прапором --with-exec-dir під час процесу складання Unix . PHP у безпечному режимі виконує зовнішні двійкові файли лише з цього каталогу. За промовчанням використовується каталог /usr/local/bin. Це не має нічого спільного з обслуговуванням звичайної PHP/HTML веб-сторінки.

    safe_mode_allowed_env_vars =

    Ця опція php ini визначає, які змінні оточення користувачі можуть змінити в безпечному режимі. За промовчанням лише ті змінні, до яких додано «PHP_ ». Якщо ця директива порожня, більшість змінних можна змінювати.

    safe_mode_protected_env_vars =

    Параметр встановлює, які змінні оточення користувачі не можуть змінити в безпечному режимі, навіть якщо опція safe_mode_allowed_env_vars увімкнена.

    disable_functions =

    Досить корисним доповненням у конфігурації PHP4 , яке збереглося і у версії PHP5 є можливість відключення вибраних функцій з міркувань безпеки. Раніше це вимагало ручної правки коду мовою C, якою був написаний інтерпретатор PHP. Функції файлової системи, операційної системи та мережі мають бути першими в цьому списку, тому що можливість запису файлів та зміни системи через HTTP не є безпечною.

    max_execution_time = 30

    При налаштуванні php ini потрібно знати, що функція set_time_limit() не працюватиме у безпечному режимі. Тому це основний спосіб реалізувати затримку виконання скрипту у безпечному режимі. У Windows ви повинні виконати примусове завершення, ґрунтуючись на максимальному рівні пам'яті, а не на часі. Також можна використовувати налаштування таймууту Apache для затримки. Але вона буде застосована і до файлів сайту, що не є PHP.

    error_reporting = E_ALL & ~E_NOTICE

    Значення за замовчуванням є E_ALL & ~E_NOTICE , всі помилки крім повідомлень. Для серверів має бути встановлено як мінімум значення за промовчанням. І лише на основних серверах можна використовувати менше значення.

    error_prepend_string = [""]

    Разом з використовується з рядками, як при формуванні значення поля форми.

    variables_order = EGPCS

    Замінює gpc_order. Обидві версії застаріли разом із register_globals. Він встановлює порядок різних змінних: Environment, GET, POST, COOKIE та SERVER ( або Built-in). Ви можете змінити цей порядок. Змінні будуть послідовно перезаписані зліва направо, при цьому найправіший завжди. виграє». Це означає, що якщо залишити значення за промовчанням і використовувати одне ім'я для змінного середовища, змінної POST і змінної COOKIE, то, зрештою, ім'я буде належати змінній COOKIE.

    register_globals = Off

    Цей параметр php ini set дозволяє визначити, чи потрібно реєструвати змінні EGPCS як глобальні. В даний час цей спосіб застарів, і починаючи з PHP 4.2 цей прапор за замовчуванням встановлений у значення Off . Замість нього використовуйте суперглобальні масиви.

    gpc_order = GPC

    Цей параметр застарів.

    magic_quotes_gpc = On

    Екранує лапки у вхідних даних GET/POST/COOKIE. Якщо ви використовуєте багато форм, які надсилають дані самі собі або іншим формам, і відображають значення форм, потрібно активувати цю директиву або використовувати функції addslashes() для рядкового типу даних.

    magic_quotes_runtime = Off

    Цей параметр екранує лапки у вхідних рядках бази даних та текстових рядках. Пам'ятайте, що SQL додає сліш в одинарні лапки та апострофи при збереженні рядків і не прибирає їх при поверненні рядків. Якщо цей параметр вимкнено, необхідно використовувати функцію stripslashes() при виведенні будь-яких типів рядкових даних з SQL SQL . Якщо для magic_quotes_sybase встановлено значення On, то цей параметр повинен бути Off.

    magic_quotes_sybase = Off

    Екранує одиночні лапки у вхідних рядках бази даних та текстових рядках з одиночними лапками у стилі Sybase , а не зворотним слішем. Якщо для параметра magic_quotes_runtime встановлено значення On, цей параметр повинен бути вимкнений.

    auto-prepend-file =

    Якщо в цьому параметрі php ini вказаний шлях, PHP повинен автоматично додати конструкцію include() на початок кожного PHP-файлу. Слід враховувати обмеження для шляхів файлів, що включаються.

    auto-append-file =

    Якщо в цьому параметрі вказано шлях, PHP повинен автоматично ввести конструкцію include() в кінець кожного PHP-файлу, крім випадків, коли здійснюється вихід за допомогою функції exit(). Слід враховувати обмеження для шляхів файлів, що включаються.

    include_path =

    Якщо встановити це значення, вам буде дозволено вмикати або вимагати файли тільки із зазначених каталогів. Каталог include зазвичай знаходиться під кореневим документом. Це необхідно, якщо ви працюєте у безпечному режимі. Встановіть для параметра значення .in , щоб увімкнути файли з каталогу, де знаходиться ваш скрипт. Декілька каталогів поділяються двокрапками: .:/usr/local/apache/htdocs:/usr/local/lib.

    doc_root =

    При налаштуванні php ini, якщо ви використовуєте Apache , то у файлі httpd.conf кореневий каталог документа для цього сервера або віртуального хоста вже заданий. Встановіть це значення тут, якщо використовуєте безпечний режим або хочете дозволити PHP тільки для частини сайту ( наприклад, тільки в одному підкаталозі).

    file_uploads =

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

    upload_tmp_dir =

    Не видаляйте коментарі з цього рядка, якщо не знаєте, що таке !

    session.save-handler = files

    За винятком поодиноких випадків змінювати цей параметр не потрібно.

    ignore_user_abort =

    Визначає, що станеться, якщо відвідувач сайту натисне у своєму браузері кнопку « Зупинити». За промовчанням встановлено значення On , яке означає, що скрипт продовжить працювати до завершення або тайм-аут. Якщо змінити значення цього параметра на Off , скрипт буде перервано. Цей параметр працює тільки в режимі модуля, а не в CGI.

    mysql.default_host = hostname

    Стандартний хост-сервер, що використовується при підключенні до сервера бази даних, якщо не вказано інший вузол.

    mysql.default_user = username

    Цей параметр php ini задає ім'я користувача за промовчанням, яке використовується при підключенні до сервера бази даних, якщо інше ім'я не вказано.

    mysql.default_password = password

    Стандартний пароль, який використовується при підключенні до сервера бази даних, якщо не вказано інший пароль.

    Переклад статті « PHP 7 - PHP.INI File Configuration» був підготовлений дружною командою проекту Сайтобудування від А до Я.