Установка php5 c портов на FreeBSD для веб-сервера apache
Статья посвящена установке PHP5 на FreeBSD и настройке, чтобы можно было создавать странички на php.
1. Запускаю конфигурацию перед установкой php:
# cd /usr/ports/lang/php5
# make clean
# make configure
2. Далее устанавливаем с портов дополнительные модули для php:
# cd /usr/ports/lang/php5-extensions/
# make clean
# make configure
В настройках обязательно включить поддержку следующих модулей:
DOM
GD
ICONV
MBSTRING
MYSQL
SESSION
XML
ZLIB
Теперь выполняем непосредственно установку
Вызвав еще раз 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):
Проверяю в процессах , что он остановлен
Проверяю файл httpd.conf:
Там идет длинный список из LoadModule ищем строчку посвященную php5 — эта строчка после установки php5 появилась в нем сама:
LoadModule php5_module libexec/apache22/libphp5.so
4. Подключаем обработку php только для тех сайтов, в которых он будет использоваться, к примеру, :
В этом файле можно настроить папки с сайтами — виртуальные хосты на одном сервере.
К примеру так :
ServerName 192.168.18.55
DocumentRoot /usr/local/www/apache22/data/howtoes
ErrorLog /var/log/httpd_howtoes.log
DirectoryIndex index.html index.htm
#Вот этот кусок вставляем чтобы этот сайт(директория) обрабатывал PHP 5
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
5. Теперь делаем проверку заработают ли странички 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
Теперь проверяем работоспособность нашего сервера с поддержкой 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
Чтобы выводились ошибки в браузер:
Регистрирование переменных PHP:
462 variables_order = «EGPCS»
Отключение автоматической обработки кавычек ,к примеру, необходимо для корректной работы Joomla:
Разрешение на загрузку файлов:
Делаем временную папку для закаченных файлов
Настраиваем максимальный размер закачиваемого файла:
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 снова
Где находится PHP.ini в Mac OS X Lion? Думал, что это было в / usr / local / php5 / lib
Я хотел запустить PHP прямо на моем Mac, без комментариев httpd.conf, активировать общий доступ к сети, установить MySQL и т.д. Я не могу найти свои файлы PHP, что наиболее важно, PHP.ini. На моей старой машине он был расположен в /usr/local/php5/lib Но каталог php5 не существует в /usr/local.. Нужно ли мне получить пакет или я ищу в неправильном месте? Запуск OS X 10.7.3, PHP 5.3.8, Apache/2.2.21 Благодарю.
@ralfe Следует добавить, что вам нужно искать параметр «Loaded Configuration File» в phpinfo () или php —ini (запустить в окне терминала). Потому что, если нет php.ini, оба из них сообщат путь к файлу конфигурации как /etc (по крайней мере, при моей установке OS X 10.8). Если файл конфигурации не загружен, то вам следует попробовать ответ по Mac
В / usr / local / php5 php-установщик entropy.ch и liip.ch устанавливают (ed) php. Никогда не было места установки Apple php.
10 ответов
Вы должны найти его в /private/etc, если он существует, в противном случае:
sudo cp /private/etc/php.ini.default /private/etc/php.ini
Хорошо, есть файл php.ini.default в / private / etc, и я проверяю его. но есть идеи, почему у меня нет старой папки php5 в usr / local? Там было множество файлов, включая рекомендуемый php.ini. Это изменение в более новой версии или PHP5 или Lion или что-то еще?
PHP5 включен по умолчанию в MacOS X начиная с 10.5 с указанным выше расположением для файла php.ini. Если вы установили его вручную, он не должен был быть удален во время обновления до Lion; странный.
Это было на старой машине довольно давно (дни тигра). Эта машина является новой установкой. Спасибо за помощь!
Файл php.ini.default на моей машине Lion не соответствовал всем настройкам по умолчанию, когда php.ini отсутствовал. Примечательно, что short_tags был выключен, error_reporting, log_errors и некоторые незначительные настройки отличались. Вы захотите сравнить вывод php -i до и после создания вашего php.ini.
на моем mac у меня был файл в /private/etc/php.ini, но php, похоже, игнорировал любые изменения, которые я там сделал, обнаружил, что он использует файл в /usr/local/php5/lib/php.ini
этот ответ плохой, так как расположение файла php.ini может варьироваться в зависимости от того, как установлен PHP, версия OS X и как пользователь настраивает свою установку
Этот ответ указал мне правильное направление. cp php.ini.default> php.ini и загруженная конфигурация CLI стала /etc/php.ini. Проверьте php -i | grep php.ini после
Чтобы найти INI файл на вашем компьютере, откройте Terminal.app и выполните следующую команду:
Если вам нужен шаблон для Lion, попробуйте это.
У меня нет загруженного php.ini прямо сейчас. В основном я ищу каталог с «рекомендуемым» шаблоном php.ini.
В терминале сделать php -i | grep php.ini php -i | grep php.ini . Должен дать вам несколько подсказок;)
Как уже указывалось, команда php —ini сообщит вам, где PHP ожидает найти файл php.ini.
Для стандартной установки он, вероятно, будет искать /etc/php.ini
Если вы использовали macports, тогда PHP может искать /opt/local/etc/php5/php.ini
Запустите phpinfo() из любого файла, и он скажет вам, где он находится. Вот скриншот.
это лучший способ, так как вы можете найти копии php.ini в других папках «по умолчанию», но этот способ скажет вам ту, которую он фактически использует, так что вы избежите царапин на голове и разочарования, возникающего при внести изменения, но php, кажется, совершенно не знает об этих изменениях.
Вы также можете открыть php REPL в вашей оболочке, запустив php -a где вы затем запустите phpinfo(); ,
Ответы @Cronk и @Justin помогли мне познакомиться с Mac OS X 10.9 Mavericks. Фактически, в моей системе файл /etc/php.ini отсутствовал полностью, и только когда я запустил phpinfo() на веб-сервере, я заметил, что не было никакого файла конфигурации. Копирование файла из /etc/php.ini.default и добавление полного пути к библиотеке mcrypt.so в файл конфигурации решило проблему:
cp /etc/php.ini.default /etc/php.ini
Затем в /etc/php.ini добавьте следующую строку (используя правильный путь к файлу mcrypt.so ):
extension="/usr/local/Cellar/php54-mcrypt/5.4.29/mcrypt.so"
Затем перезапустите Apache2:
У меня уже не один экземпляр PHP работает, поэтому другие ответы у меня не сработали. Это сделал:
Создайте файл PHP и откройте его локальный URL в вашем браузере:
Путь PHP.INI будет указан близко к началу.
Это довольно старая ветка, но я хотел бы добавить дополнительные пояснения.
Если у вас есть система с несколькими установками PHP (как у меня), результаты, которые вы получите от использования инструментов командной строки, МОГУТ БЫТЬ отличны от тех, которые фактически используются веб-сервером. Если вас интересует, какой PHP используется веб-сервером, используйте только информацию, собранную с веб-страницы, которая использует функцию phpinfo().
Например, в моей системе версии, представленные двумя разными методами, были следующими:
Для пути к файлу php.ini все было иначе:
Command line: /private/etc/php.ini
Web: /long/path/to/the/file/php.ini
Вы можете найти все возможные файлы php.ini, используя это:
find / -name php.ini 2>&1 | grep -v «denied» | grep -v «directory»
(элементы ‘2> & 1’ и ‘grep’ ограничивают вывод команды полезной информацией, то есть избавляются от сообщений об ошибках)
В моей системе я нашел 3 файла INI. Поскольку меня интересовало, что использует веб-сервер, я знал, что должен использовать путь, полученный из результатов веб-страницы. Я внес свои изменения в файл php.ini, который там был указан, перезапустил apache и заново запустил веб-страницу; новые правки были показаны там.
Чтобы перезапустить Apache: