When I upgrade to apache 2.2, this:
AddType application/x-httpd-php .php5
AddType application/x-httpd-php .php42
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtm
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .asp
...does not worked for me, so I did this:
<FilesMatch "\.(php*|phtm|phtml|asp|aspx)$">
SetHandler application/x-httpd-php
</FilesMatch>
Another interesting point with Apache 2.2 is following.
Let suppose we installed PHP as module. But for some directory, we need to use PHP as CGI (probably because of custom configuration). This can be done using:
<FilesMatch "\.(php*|phtm|phtml|asp|aspx)$">
SetHandler none
</FilesMatch>
AddType application/x-httpd-php-custom .php
Action application/x-httpd-php-custom /cgi-bin/php-huge
Note type must be different than "application/x-httpd-php" and also you need to deactivate the handler on sertain extention. You can do mixed configuration:
<FilesMatch "\.(php)$">
SetHandler none
</FilesMatch>
AddType application/x-httpd-php-custom .php
Action application/x-httpd-php-custom /cgi-bin/php-huge
in such case files like *.php5 and so on will be parsed via module, but *.php will go to php-huge executable.Apache 2.x на Unix системи
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Apache 2.x на Unix системи
Референца за `install.unix.apache2.php` со подобрена типографија и навигација.
Apache 2.x на Unix системи
Овој дел содржи белешки и совети специфични за инсталациите на PHP на Apache 2.x на Unix системи.
Не препорачуваме користење на нишкаст MPM во продукција со Apache 2. Користете го prefork MPM, кој е стандарден MPM со Apache 2.0 и 2.2. За информации зошто, прочитајте ја поврзаната ставка од ЧПП за користење Apache2 со нишкаст MPM
На » Apache документација е најавторитетниот извор на информации за серверот Apache 2.x. Повеќе информации за опциите за инсталација за Apache може да се најдат таму.
Најновата верзија на Apache HTTP Server може да се добие од » Apache страница за преземање, и соодветна верзија на PHP од погоре споменатите места. Овој брз водич покрива само основите за почеток со Apache 2.x и PHP. За повеќе информации прочитајте го » Apache документација. Броевите на верзиите се изоставени овде, за да се осигура дека упатствата не се погрешни. Во примерите подолу, 'NN' треба да се замени со специфичната верзија на Apache што се користи.
Во моментов постојат две верзии на Apache 2.x - има 2.4 и 2.2. Додека постојат различни причини за избор на секоја, 2.4 е моментално најновата верзија и онаа што се препорачува, ако таа опција ви е достапна. Сепак, упатствата овде ќе работат и за 2.4 и за 2.2. Имајте предвид дека Apache httpd 2.2 е официјално крај на животот (End Of Life), и не се издаваат нови развојни или безбедносни поправки за него.
-
Земете го Apache HTTP серверот од локацијата наведена погоре и распакувајте го:
tar -xzf httpd-2.x.NN.tar.gz
-
Слично, земете и распакувајте го изворниот код на PHP:
tar -xzf php-NN.tar.gz
-
Изградете и инсталирајте го Apache. Консултирајте ја документацијата за инсталација на Apache за повеќе детали за градење на Apache.
cd httpd-2_x_NN ./configure --enable-so make make install
-
Сега имате Apache 2.x.NN достапен под /usr/local/apache2, конфигуриран со поддршка за модули што може да се вчитаат и стандардниот MPM prefork. За да ја тестирате инсталацијата, користете ја вашата нормална процедура за стартување на Apache серверот, на пр.:
и запрете го серверот за да продолжите со конфигурацијата за PHP:/usr/local/apache2/bin/apachectl start
/usr/local/apache2/bin/apachectl stop
-
Сега, конфигурирајте и изградете го PHP. Овде ги прилагодувате PHP со разни опции, како кои екстензии ќе бидат овозможени. Стартувајте скриптата. Список на достапни опции заедно со кратки објаснувања може да се прикаже со извршување на за список на достапни опции. Во нашиот пример ќе направиме едноставна конфигурација со Apache 2 и поддршка за MySQL.
Ако го изградивте Apache од изворниот код, како што е опишано погоре, подолниот пример ќе одговара на вашата патека за apxs, но ако го инсталиравте Apache на некој друг начин, ќе треба да ја прилагодите патеката до apxs соодветно. Имајте предвид дека некои дистрибуции може да преименуваат apxs to apxs2.
cd ../php-NN ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql make make install
Ако одлучите да ги промените вашите опции за конфигурација по инсталацијата, ќе треба повторно да ги извршите configure, makeПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во направи инсталирај чекори. Треба само да го рестартирате апач за да стапи на сила новиот модул. Повторно компајлирање на Апач не е потребно.
Имајте предвид дека освен ако не е поинаку наведено, направи инсталирај исто така ќе инсталира Инсталирање пакети, разни PHP алатки како што се phpize, инсталирајте го PHP CLI, и повеќе.
-
Поставете го вашиот php.ini.
cp php.ini-development /usr/local/lib/php.ini
Може да го уредите вашиот
.iniдатотека за да ги поставите опциите на PHP. Ако претпочитате да имате php.ini на друга локација, користете--with-config-file-path=/some/pathво чекор 5.Ако наместо тоа изберете php.ini-production, бидете сигурни да го прочитате списокот со промени во него, бидејќи тие влијаат на тоа како се однесува PHP.
-
Уредете го вашиот httpd.conf за да го вчитате PHP модулот. Патеката на десната страна од
LoadModuleизјавата мора да укажува на патеката на PHP модулот на вашиот систем. На направи инсталирај од погоре можеби веќе го додаде ова за вас, но проверете.За PHP 8:
LoadModule php_module modules/libphp.so
За PHP 7:
LoadModule php7_module modules/libphp7.so
-
Кажете му на Apache да парсира одредени екстензии како PHP. На пример, нека Apache парсира
.phpдатотеки како PHP. Наместо само да го користи ApacheAddTypeдиректива, сакаме да избегнеме потенцијално опасни преземања и креирани датотеки како exploit.php.jpg да се извршуваат како PHP. Користејќи го овој пример, можете да имате било која екстензија(и) да се парсира како PHP со едноставно додавање. Ќе додадеме.phpза да демонстрираме.<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>Или, ако сакаме да дозволиме
.php,.php2,.php3,.php4,.php5,.php6Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во.phtmlдатотеки да се извршуваат како PHP, но ништо друго, би го користеле ова:<FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch>И за да дозволиме
.phpsдатотеки да се обработуваат од php филтерот за извор, и да се прикажуваат како изворно кодиран со синтаксна ознака, користете го ова:<FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>mod_rewriteможе да се користи за да се дозволи било кој произволен.phpдатотека да се прикажува како изворно кодиран со синтаксна ознака, без потреба да се преименува или копира во.phpsдатотека:RewriteEngine On RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
php филтерот за извор не треба да биде овозможен на продукциски системи, каде што може да открие доверливи или на друг начин чувствителни информации вградени во изворниот код.
-
Користете ја вашата нормална процедура за стартување на Apache серверот, на пр.:
/usr/local/apache2/bin/apachectl start
OR
service httpd restart
Следејќи ги чекорите погоре ќе имате активен Apache2 веб сервер со поддршка за PHP како SAPI модул. Се разбира, постојат многу повеќе опции за конфигурација достапни за Apache и PHP. За повеќе информации напишете скриптата. Список на достапни опции заедно со кратки објаснувања може да се прикаже со извршување на во соодветното дрво на изворниот код.
Apache може да биде изграден мултитредиран со избирање на worker MPM, наместо стандардот prefork MPM, кога Apache е изграден. Ова се прави со додавање на следната опција на аргументот предаден на ./configure, во чекор 3 погоре:
--with-mpm=worker
Ова не треба да се преземе без да се биде свесен за последиците од оваа одлука и да има барем фер разбирање за импликациите. Документацијата на Apache во врска со » MPM-Модули дискутира за MPMs во многу поголем детал.
Забелешка:
На Apache MultiViews ЧПП дискутира за користење на multiviews со PHP.
Забелешка:
За да се изгради мулти-тредирана верзија на Apache, целниот систем мора да поддржува нишки. Во овој случај, PHP исто така треба да биде изграден со Zend Thread Safety (ZTS). Под оваа конфигурација, нема да бидат достапни сите екстензии. Препорачаната поставка е да се изгради Apache со стандардниот prefork MPM-Module.
Белешки од корисници 2 забелешки
I had just installed php8.1.12 on a machine used for writing C code.
Below are some libraries that I needed to download on a debian-based OS.
apt-get install libpcre3 libpcre3-dev
apt-get install apache2-dev
apt-get install libxml2-dev
apt-get install libsqlite3-dev
These were the missing packages that I required.
If you get an error regarding a missing package or library, for example when I needed sqlite3, run the command:
apt search sqlite3
And you'll be able to see if there's any dev or lib packages.
The apache2 instructions worked flawlessly at the time of php8.1.12; and in order to get certain requirements for an application, I had to run the php configure file like so:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql --with-mysqli --with-zip --enable-gd
The extra flags allowed me to use both types of mysql, allowed me to utilize PHP zip archiving, and allowed me to use Gnatt stuff.