Установка php5 c портов на FreeBSD для веб-сервера apache
Статья посвящена установке PHP5 на FreeBSD и настройке, чтобы можно было создавать странички на php.
1. Запускаю конфигурацию перед установкой php:
# cd /usr/ports/lang/php5 # make clean # make configure
Настройки следующие: 
Запускаем установку:
# make install clean
2. Далее устанавливаем с портов дополнительные модули для php:
# cd /usr/ports/lang/php5-extensions/ # make clean # make configure
В настройках обязательно включить поддержку следующих модулей:
DOM GD ICONV MBSTRING MYSQL SESSION XML ZLIB
Теперь выполняем непосредственно установку
# make install clean
Вызвав еще раз make configure видим список установленных модулей:
# make configure ===> Vulnerability check disabled, database not found ===> Found saved configuration for php5-extensions-1.1 ===> Extracting for php5-extensions-1.1 ===> Patching for php5-extensions-1.1 ===> php5-extensions-1.1 depends on file: /usr/local/include/php/main/php.h - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/ctype.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/dom.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/filter.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/gd.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/hash.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/iconv.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/json.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/mbstring.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/mysql.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/pcre.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/pdo.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/pdo_sqlite.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/posix.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/session.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/simplexml.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/spl.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/sqlite.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/tokenizer.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/xml.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/xmlreader.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/xmlwriter.so - found ===> php5-extensions-1.1 depends on file: /usr/local/lib/php/20060613/zlib.so - found ===> Configuring for php5-extensions-1.1 #
3. Подключаем php к apache. Для того чтобы php подцепился к Httpd серверу останавливаем его (останавливаю apache):
# /usr/local/etc/rc.d/apache22 stop
Проверяю в процессах , что он остановлен
# ps -ax|grep httpd
Проверяю файл httpd.conf:
# less /usr/local/etc/apache22/httpd.conf
Там идет длинный список из LoadModule ищем строчку посвященную php5 - эта строчка после установки php5 появилась в нем сама:
LoadModule php5_module libexec/apache22/libphp5.so
4. Подключаем обработку php только для тех сайтов, в которых он будет использоваться, к примеру, :
# vi /usr/local/etc/apache22/Includes/virtual.conf
В этом файле можно настроить папки с сайтами - виртуальные хосты на одном сервере. К примеру так :
<VirtualHost *:80> ServerName 192.168.18.55 DocumentRoot /usr/local/www/apache22/data/howtoes ErrorLog /var/log/httpd_howtoes.log <IfModule dir_module> DirectoryIndex index.html index.htm </IfModule> #Вот этот кусок вставляем чтобы этот сайт(директория) обрабатывал PHP 5 <IfModule php5_module> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule> </VirtualHost>
5. Теперь делаем проверку заработают ли странички php на нашем сервере. Создаю следующий php пример в папке на которую настроен апач:
# cat /usr/local/www/apache22/data/howtoes/1.php
<?php $pic=imagecreate(350,100); $piccolor=imagecolorallocate($pic, 255,255,255); $textcolor=imagecolorallocate($pic, 0,0,0); $linecolor=imagecolorallocate($pic, 0,0,255); $text="GD test successful - gdtest.php!"; imagerectangle($pic, 1,99, 349,0, $linecolor); imagestring($pic,5,30,40, $text, $textcolor); header("content-type: image/png"); imagepng($pic); imagedestroy($pic); ?>
6. Проверяем корректно ли мы задали конфиги для апач:
# apachectl configtest Syntax OK
Теперь рестартуем apache22
# /usr/local/etc/rc.d/apache22 restart
Теперь проверяем работоспособность нашего сервера с поддержкой php страничек:

7. Настраиваем php.ini (этот пункт по желанию, может кого-то устраивают и настройки по-умолчанию)
Сначала просто копируем php.ini :
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
Теперь правим строки( цифры – это номера строк): Чтобы выводились только ошибки:
362 error_reporting = E_ALL & ~E_NOTICE
Чтобы выводились ошибки в браузер:
381 display_errors = On
Регистрирование переменных PHP:
462 variables_order = "EGPCS"
Отключение автоматической обработки кавычек ,к примеру, необходимо для корректной работы Joomla:
499 magic_quotes_gpc = On
Разрешение на загрузку файлов:
599 file_uploads = On
Делаем временную папку для закаченных файлов
603 upload_tmp_dir = /tmp
Настраиваем максимальный размер закачиваемого файла:
606 upload_max_filesize = 5M
Указываем порт на котором слушает Mysql:
815 mysql.default_port = 3306
Указываем хост по умолчанию
822 mysql.default_host = localhost
Хранить файлы сессии:
1022 session.save_handler = files
Указываем путь в котором сохранять файлы сессии:
1050 session.save_path = "/tmp/session"
Чтобы ID сессии добавлялись ко всем ссылкам на странице автоматически
1143 session.use_trans_sid = 1
Перезапускаем apache22 и пробуем 1.php снова |