PHP
A PHP egy általános célú, szerveroldali szkriptnyelv dinamikus weboldalak készítéséhez. Fejlesztése 1993-ban kezdődött, és hivatalosan 1995-ben került elsőként kiadásra. Az ezredfordulóra a PHP elkezdte kiszorítani a Perl nyelvet mint a LAMP stack preferált "P" betűjét, mielőtt a Python felmerült volna kihívóként. Ennek ellenére a PHP továbbra is népszerű szerveroldali szkriptnyelv dinamikus weboldalak és webalkalmazások számára, nem utolsósorban a WordPress blogplatform népszerűségének köszönhetően.
Telepítés
USE jelölőzászlók
A PHP szoftvercsomag legfontosabb USE jelölőzászlói, a SAPI (Server API) USE jelölőzászlók, amelyek a következők: apache2, cgi és fpm. Ezen jelölőzászlók mellett létezik egy részletes lista a jelölőzászlókról, amelyek lehetővé teszik a PHP értelmező különféle tulajdonságait:
USE flags for dev-lang/php The PHP language runtime engine
+cli
|
Enable the Command-Line Interface (CLI) SAPI |
+ctype
|
Enable the Character type checking (ctype) extension |
+fileinfo
|
Enable the File Information extension |
+filter
|
Enable the Data Filtering extension |
+flatfile
|
Add dbm support for flat files |
+iconv
|
Enable support for the iconv character set conversion library |
+jit
|
Enable PCRE JIT support |
+opcache
|
Enables built-in opcode cache, replacing pecl-apc et al. |
+opcache-jit
|
Enable Just In Time (JIT) compilation within the opcache extension |
+phar
|
Enables the phar extension to provide phar archive support |
+posix
|
Add support for POSIX-compatible functions |
+session
|
Add persistent session support |
+simplexml
|
Enable the SimpleXML extension |
+tokenizer
|
Add support for the PHP file parser |
+xml
|
Add support for XML files |
acl
|
Add support for Access Control Lists |
apache2
|
Add Apache2 support |
apparmor
|
Support FPM application confinement through sys-libs/libapparmor |
argon2
|
Enable password hashing algorithm from app-crypt/argon2 |
avif
|
Add AV1 Image Format (AVIF) support |
bcmath
|
Enable the BCMath Arbitrary Precision Mathematics extension |
berkdb
|
Add support for sys-libs/db (Berkeley DB for MySQL) |
bzip2
|
Enable bzip2 compression support |
calendar
|
Add support for calendars (not using mcal!) |
capstone
|
Support opcache JIT disassembly through dev-libs/capstone |
cdb
|
Add support for the CDB database engine from the author of qmail |
cgi
|
Add CGI script support |
cjk
|
Add support for Multi-byte character languages (Chinese, Japanese, Korean) |
curl
|
Add support for client-side URL transfer library |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
embed
|
Enable embed SAPI |
enchant
|
Enable the Enchant spelling library extension using app-text/enchant |
exif
|
Add support for reading EXIF headers from JPEG and TIFF images |
ffi
|
Enable the Foreign Function Interface (FFI) extension using dev-libs/libffi |
firebird
|
Add support for the Firebird relational database |
fpm
|
Enable the FastCGI Process Manager SAPI |
ftp
|
Add FTP (File Transfer Protocol) support |
gd
|
Enable the Image Processing and GD extension (requires media-libs/libjpeg-turbo and media-libs/libpng) |
gdbm
|
Add support for sys-libs/gdbm (GNU database libraries) |
gmp
|
Add support for dev-libs/gmp (GNU MP library) |
imap
|
Add support for IMAP (Internet Mail Application Protocol) |
inifile
|
Add dbm support for .ini files |
intl
|
Enables the intl extension for extended internalization support |
iodbc
|
Add support for iODBC library |
ipv6
|
Support IPv6 connectivity in fopen and friends, and v6 address conversions in functions like inet_pton and inet_ntop. |
jpeg
|
Add JPEG image support |
kerberos
|
Add kerberos support |
ldap
|
Add LDAP support (Lightweight Directory Access Protocol) |
ldap-sasl
|
Add SASL support for the PHP LDAP extension using dev-libs/cyrus-sasl |
libedit
|
Use the libedit library (replacement for readline) |
lmdb
|
Enable support for dev-db/lmdb db backend |
mhash
|
Add support for the mhash library |
mssql
|
Add support for Microsoft SQL Server database |
mysql
|
Add mySQL Database support |
mysqli
|
Add support for the improved mySQL libraries |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
oci8-instant-client
|
Use dev-db/oracle-instantclient-basic as Oracle provider instead of requiring a full Oracle server install |
odbc
|
Add ODBC Support (Open DataBase Connectivity) |
pcntl
|
Enable the Process Control extension |
pdo
|
Enable the PHP Data Objects extension |
phpdbg
|
Enable the PHP Debug Command Line SAPI (like gdb for php) |
png
|
Add support for libpng (PNG images) |
postgres
|
Add support for the postgresql database |
qdbm
|
Add support for the qdbm (Quick Database Manager) library |
readline
|
Enable support for libreadline, a GNU line-editing library that almost everyone wants |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
session-mm
|
Include dev-libs/mm support for session storage |
sharedmem
|
Enable the shmop extension |
snmp
|
Add support for the Simple Network Management Protocol if available |
soap
|
Add support for SOAP (Simple Object Access Protocol) |
sockets
|
Add support for tcp/ip sockets |
sodium
|
Enable support for crypto through dev-libs/libsodium |
spell
|
Add dictionary support |
sqlite
|
Add support for sqlite - embedded sql database |
ssl
|
Add support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security) |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
sysvipc
|
Enable the PHP System-V semaphore, shared memory and IPC extension |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
threads
|
Add threads support for various packages. Usually pthreads |
tidy
|
Add support for HTML Tidy |
tokyocabinet
|
Enable support for dev-db/tokyocabinet db backend |
truetype
|
Add support for FreeType and/or FreeType2 fonts |
unicode
|
Add support for Unicode |
valgrind
|
Enable annotations for accuracy. May slow down runtime slightly. Safe to use even if not currently using dev-debug/valgrind |
webp
|
Add support for the WebP image format |
xmlreader
|
Enable the XMLReader extension |
xmlwriter
|
Enable the XMLWriter extension |
xpm
|
Add support for XPM graphics format |
xslt
|
Build the XSL extension |
zip
|
Enable support for ZIP archives |
zlib
|
Add support for zlib compression |
Az ebuild egy módosított "production" verziót telepít a php.ini fájlból, amely szigorúbb biztonsági beállításokat tartalmaz, és az alapértelmezett útvonalakat a Gentoo rendszerekhez igazítja. Mind a upstream "production", mind a "development" php.ini fájlok a /usr/share/doc/php-* könyvtárba kerülnek telepítésre.
Kiterjesztések
A kiterjesztések telepítéséhez először döntse el, hogy mely PHP verziókhoz kívánja lefordítani a kiterjesztéseket. Ezt a PHP_TARGETS változó beállításával teheti meg:
/etc/portage/make.conf
PHP_TARGETS="php5-6"
Több verzió is meghatározható, csak adja hozzá a további verziókat szóközzel elválasztva. Vegye figyelembe, hogy a php slot neve "5.6", és az ennek megfelelően a PHP_TARGETS változó értéke php5-6
. Ez a jelenlegi korlátozások miatt van a USE nevek esetében.
Emerge
A fentiekben említett USE jelölőzászló beállítások elvégzése után frissíteni kell a rendszert, hogy a változások érvénybe lépjenek:
root #
emerge --ask --update --changed-use --deep @world
Több PHP verzió futtatása
A Gentoo PHP fejlesztéshez való használatának egyik nagy előnye a verzió helyfoglalás. Nagyon egyszerű váltani a PHP több verziója között, valamint egyszerű több verziót egyidejűleg futtatni. Ezt mind a eselect paranccsal lehet elvégezni, amelyet a app-eselect/eselect-php szoftvercsomag biztosít, amelynek automatikusan települnie kell a PHP telepítése során.
Például, a különböző PHP verziók kiválasztása lehetővé teszi a rendszer számára, hogy a cli SAPI számára a PHP 7.0 verziót futtassa, míg a rendszer webszerveréhez a PHP 5.6 verziót használja. Ez lehetővé teszi a rendszergazdák vagy az alkalmazásfejlesztők számára, hogy gyorsan teszteljék az alkalmazásokat különböző PHP verziókon.
A cli SAPI modul elérhető verzióinak listázásához használja a következő szintaxist:
root #
eselect php list cli
[1] php5.5 [2] php5.6 * [3] php7.0
A *
(csillag) jelöli az aktuálisan aktív verziót a kiválasztott modulhoz. Az egyéb SAPIs ellenőrzéséhez egyszerűen cserélje ki a cli
modult a fpm
, cgi
, vagy apache2
modulokkal.
A verziók cseréjéhez használja a következő parancsot:
root #
eselect php set cli 3
A jelen példában a 3
szám megfelel a fenti list
alparancs kimenetében szereplő számnak. Mostantól a PHP 7.0 verziót használjuk a parancssorhoz:
root #
php -v
PHP 7.0.10-pl0-gentoo (cli) (built: Aug 23 2016 12:38:44) ( NTS )
Beállítás
A PHP beállítás a /etc/php útvonalon található, amely minden egyes szerver API (SAPI) és minden egyes PHP verzió számára egy alkönyvtárat tartalmaz. Például a PHP-5.6 apache2 SAPI beállítás fájljai a /etc/php/apache2-php5.6 könyvtárban kerülnek telepítésre.
Webszerverek
A PHP szerveroldali használatához telepíteni kell és be kell állítani egy webszervert, amely képes PHP-t futtatni. Az alábbiakban röviden áttekintjük a népszerű webszervereket.
Nginx
Az nginx telepítésesének érdekében egyszerűen csak használja az emerge parancsot:
root #
emerge --ask www-servers/nginx
Ha az egyéni NGINX_MODULES_HTTP értékek be vannak állítva a make.conf fájlban, akkor győződjön meg arról, hogy a
fastcgi
modul engedélyezve van.Az Nginx telepítése után módosítsa a /etc/nginx/nginx.conf fájl szerver szekcióját, hogy valami ilyesmi legyen:
/etc/nginx/nginx.conf
Az nginx beállításának egy része a PHP FastCGI használatáhozserver {
listen 127.0.0.1;
server_name localhost;
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;
root /var/www/localhost/htdocs;
location ~ \.php$ {
try_files $uri $uri/ =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
Most indítsa el a kapcsolódó szolgáltatásokat, hogy működő webhelyet kapjon. A php-fpm init szkript elindítja a PHP FastCGI Process Manager-t. A FastCGI lehetővé teszi a webszerverek számára, hogy a PHP számításokat erre a folyamatkezelőre terheljék át.
Amikor az OpenRC szolgáltatáskezelőként fut:
root #
rc-service nginx start
root #
rc-service php-fpm start
A systemd számára:
root #
systemctl start nginx
root #
systemctl start php-fpm@7.2
A
php-fpm
szolgáltatás nevében lévő verziószám a PHP elérhető verziója alapján változik. Ennek megfelelően állítsa be.lighttpd
Ne engedélyezze a
php
USE jelölőzászlót a www-servers/lighttpd számára. Ez ténylegesen megbonthatja a buildet.Győződjön meg arról, hogy a lighttpd esetében a php
USE jelölőzászló le van tiltva:
/etc/portage/package.use
www-servers/lighttpd -php
A Lighttpd alapértelmezett FastCGI beállítás fájllal érkezik, de sajnos ez csak a régi PHP FCGI SAPI-val működik, nem pedig egy általános FCGI beállítással. Mivel a php
USE jelölőzászló le lett tiltva, ezért nem lesz beépítve, és ez így helyes. Ugyanakkor jó alapot nyújt egy beállítás fájlhoz, amely használható az FPM-el.
Szerkessze a /etc/lighttpd/mod_fastcgi.conf fájlt, hogy valami ilyesmi legyen:
/etc/lighttpd/mod_fastcgi.conf
FastCGI engedélyezése a lighttpd esetébenserver.modules += ("mod_fastcgi")
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"host" => "127.0.0.1",
"port" => "9000"
)
)
)
Figyelje meg a host
és port
részeket.
Mivel a Gentoo működő php-fpm.ini fájllal érkezik, amely a /etc/php/fpm-php5/php-fpm.ini útvonalon található, valamint init szkript is elérhető, ezért csak el kell indítani a szolgáltatásokat:
root #
/etc/init.d/php-fpm start
root #
/etc/init.d/lighttpd start
Apache (mod_php)
Az Apache beállításához, hogy betöltse a PHP5 modult (mod_php), adja hozzá a -D PHP
értéket az APACHE2_OPTS változóhoz a /etc/conf.d/apache2 fájlban. A felhasználók emlékezhetnek rá, hogy korábban a PHP verziót is hozzá kellett adni (például -D PHP5
). Azonban a app-eselect/eselect-php 0.8.1 verziója óta a változó megváltozott csak -D PHP
értékre, hogy a jövőbeli főbb verziók könnyen integrálhatók legyenek.
/etc/conf.d/apache2
Apache beállítása a mod_php betöltéséhez## (settings for PHP5 and above)
APACHE2_OPTS="-D PHP"
Győződjön meg arról, hogy a PHP szoftvercsomag az apache2
USE jelölőzászlóval van létrehozva.
Ha valamilyen okból a rendszerből hiányzik a PHP modul integrációs fájl /etc/apache2/modules.d/70_mod_php.conf, amelyet a app-eselect/eselect-php biztosít, ha az apache2
USE jelölőzászló be van állítva, akkor manuálisan illessze azt be. Az aktuális tartalma az alábbiakban látható.
/etc/apache2/modules.d/70_mod_php.conf
<IfDefine PHP>
# The mod_php.so symlink is controlled by
# eselect-php. However, the module name changed from
# php5_module to php7_module so we can't blindly load whatever
# is there. Instead we let eselect-php manage a small
# configuration file that loads the appropriate module.
Include "/var/lib/eselect-php/mod_php.conf"
# Tell apache that mod_php should handle PHP files.
#
# NOTE: Avoiding AddHandler/AddType for security (bug
# #538822). Please read the related news item!
<FilesMatch "\.(php|php[57]|phtml)$">
SetHandler application/x-httpd-php
</FilesMatch>
# PHP source files which are meant to be displayed as
# syntax-highlighted source code.
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
DirectoryIndex index.php index.phtml
</IfDefine>
Bár egy operációs rendszeren több PHP verzió is telepíthető, az Apache csak egyetlen PHP verziót tud használni a mod_php modullal. Az Apache több PHP verziójának támogatása fpm segítségével érhető el. Az eselect php parancs a használatos az aktív mod PHP verziók közötti váltáshoz.
A PHP verziójának megváltoztatásához, amelyet az Apache kezel, először listázza az elérhető verziókat az apache2
Szerver Alkalmazás Programozási Interfész (SAPI) számára:
root #
eselect php list apache2
[1] php5.3 [2] php5.4 * [3] php5.5
Cserélje ki a kívánt verzióra:
root #
eselect php set apache2 N
Helyettesítse a fenti példában az N
jelölést a korábban megjelenített eselect php list apache2 kimenetben szereplő kívánt számmal.
A PHP modul működésének ellenőrzéséhez hozzon létre egy tesztoldalt:
/var/www/localhost/htdocs/index.php
PHP tesztoldal<html>
<body>
<?php phpinfo(); ?>
</body>
</html>
Most fojtsa el vagy nevezze át a /var/www/localhost/htdocs/index.html fájlt, és nyissa meg a tesztoldalt: http://localhost/
Egy táblázatnak kell megjelennie, amely leírja a PHP beállításokat.
Apache (fcgid)
Tekintse meg a PHP engedélyezése az fcgid segítségével bekezdést az Apache cikkben.
Apache (mod_proxy_fcgi)
Tekintse meg a PHP-FPM engedélyezése a mod_proxy_fcgi használatán keresztül az Apache 2.4 webszerverben részt.
További olvasnivaló a témában
- Upgrading to PHP 5.6 - Útmutató a régebbi telepítések 5.6-ra való frissítéséhez.
- Upgrading to PHP 7.1 - Útmutató a régebbi telepítések 7.1-re való frissítéséhez.
- Enabling PHP support - Az Apache cikkben.
- Perl — a general purpose interpreted programming language with a powerful regular expression engine.
- Python — an extremely popular cross-platform object oriented programming language.