Solus 4 - Készítsünk php-t forrásból

 ( tomsolo | 2019. május 26., vasárnap - 19:00 )

A Solus *** által szállított php csomaggal nem voltam meg elégedve, gondoltam készítek egyet. (Ha kihagyok valamit, vagy hülyeséget írok lehet jelezni.) *** Ez nem csak ennek a disztrónak hibája, az előre elkészített dolgokkal sokszor van gond.

Na szóval, nem tetszett, mert hiányoltam belőle pár extensiont illetve csak cgi-ként volt fordítva. Amennyire utána jártam saját php-t forgatni, nem tűnik nagy ördöngössségnek: forrás leszed, hozzávalók leszed, konfig beállít make -> make test -> make install. Ez ennél a disztrónál akkor kb így néz ki(szimplán a terminálba másolva majd enter):

Forrás letöltés:

wget http://at2.php.net/distributions/php-7.3.5.tar.bz2.asc
wget http://at2.php.net/distributions/php-7.3.5.tar.bz2
bunzip2 php-7.3.5.tar.bz2
tar -xvf php-7.3.5.tar
cd php-7.3.5

Függőségek beszerzése (lényegében a devel modulok) - függ attól is milyen extension kell neked a phphez: a lenti konfighoz kb ennyi kellett:

sudo eopkg install -c system.devel \
httpd-devel \
apr-devel \
apr-util-devel \
pcre2-devel \
sqlite3-devel \
bzip2-devel \
curl-devel \
enchant-devel \
enchant16-devel \
freetype2-devel \
libwebp-devel \
libjpeg-turbo-devel \
imap-devel \
openldap-devel \
cyrus-sasl-devel \
postgresql-devel \
argon2-devel \
mariadb-devel \
tidy-html5-devel \
libzip-devel \
libsodium-devel

Akkor jöjjön a konfiguráció(kézzel beírtam az útvonalat minden egyes outpothoz). Akinek nem kell az apache - akarom mondani httpd - handler az az apxs2 sort kihagyhatja, ugyanit akinek nem kell mint a static lib akkor hagyja ki a felette levőt is.


sudo './configure' \
'--enable-static' \
'--with-apxs2=/usr/bin/apxs' \
'--prefix=/opt/php-7.3.5' \
'--libexecdir=/opt/php-7.3.5' \
'--libdir=/opt/php-7.3.5' \
'--bindir=/opt/php-7.3.5/bin/' \
'--sysconfdir=/opt/php-7.3.5' \
'--with-config-file-path=/opt/php-7.3.5/' \
'--localstatedir=/var' \
'--build=x86_64-solus-linux' \
'build_alias=x86_64-solus-linux' \
'LT_SYS_LIBRARY_PATH=/usr/lib64' \
'--with-bz2=shared' \
'--with-curl=shared' \
'--with-enchant=shared' \
'--with-freetype-dir=/usr' \
'--with-gd=shared' \
'--with-gettext=shared' \
'--with-gmp=shared' \
'--with-iconv=shared' \
'--with-icu-dir=/usr' \
'--with-imap=shared' \
'--with-imap-ssl' \
'--with-jpeg-dir=/usr' \
'--with-ldap=shared' \
'--with-ldap-sasl' \
'--with-libdir=lib64' \
'--with-libzip' \
'--with-mhash' \
'--with-mysqli=shared,mysqlnd' \
'--with-openssl' \
'--with-openssl-dir=/usr/bin' \
'--with-password-argon2' \
'--with-pcre-regex=/usr' \
'--with-pdo-mysql=shared,mysqlnd' \
'--with-pdo-pgsql=shared' \
'--with-pdo-sqlite=shared,/usr' \
'--with-pgsql=shared' \
'--with-png-dir=/usr' \
'--with-readline' \
'--with-sqlite3=shared,/usr' \
'--with-sodium=/usr' \
'--with-tidy=shared' \
'--with-webp-dir=/usr' \
'--with-xsl=/usr' \
'--with-xmlrpc=shared' \
'--with-zlib' \
'--disable-huge-code-pages' \
'--disable-debug' \
'--enable-bcmath' \
'--enable-calendar=shared' \
'--enable-ctype' \
'--enable-exif=shared' \
'--enable-fileinfo=shared' \
'--enable-fpm' \
'--enable-ftp=shared' \
'--enable-intl=shared' \
'--enable-inline-optimization' \
'--enable-libxml=shared' \
'--enable-json=shared' \
'--enable-mbregex' \
'--enable-mbstring' \
'--enable-opcache' \
'--enable-pdo=shared' \
'--enable-pcntl' \
'--enable-phar' \
'--enable-posix=shared' \
'--enable-shmop=shared' \
'--enable-soap=shared' \
'--enable-sockets=shared' \
'--enable-xmlreader=shared' \
'--enable-xmlwriter=shared' \
'--enable-zend-signals' \
'--enable-zip=shared'

Ha végzett akkor jöhet a szokásos trió, bár mostanában szinte sehol nem látom a make test-et futtatni :)

make
make test
make install DESTDIR=/opt/php-7.3.5

Install végén mindent bepakol a megadott /opt/php-7.3.5 mappába, az egyetlen apache modul kivételével (libphp7.so).
(Arra nem jöttem rá hogyan kell megadni, hogy ne iderakja :P)

Hogy ne legyen ütközés egy másik verzával, ezért a /usr/lib64/httpd helyről átmozgattam a libphp7.so a /opt/php-7.3.5 mappába.
Ezután átírtam erre a betöltést a /usr/share/defaults/httpd/httpd.con-ban. Ha már itt vagyunk azt is beállíthatjuk hogyan szolgáljuk ki a phpt (handler vagy cgi).

Még annyi, hogy másoljuk fel oda a bekonfigolt php.init (a forráskódban keresd ) ahova megadtuk, hogy legyen.
Ha mindennel végeztünk, tuszkoljunk fel egy phpinfo() val teli index.php, és indítsuk el az apache-ot:
httpd -k start.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

" az egyetlen apache modul kivételével (libphp7.so).
(Arra nem jöttem rá hogyan kell megadni, hogy ne iderakja :P)"

Sehogy, es ez jó is így. Az apache modul lokációját az apxs2 utility hatarozza meg, ez az apache fejlesztoi cuccainak a resze, ami neked upstreambol jon. A PHP configure-ja ebbol dolgozik.
--
Blog | @hron84

"valahol egy üzemeltetőmaci most mérgesen toppant a lábával" via @snq-

> Sehogy, es ez jó is így

Sehogy oké, de mivel dolgozni kell vele - elmozgatni - ezért nem jó. :)
Mindenesetre így most minden phps cucli egy könyvtárban van elég csak a configot átírogatni.

Azt mondjuk nem írtam, hogy az apsx az ugye a shared modul, a --with-apache a statikus ha vkinek olyan kell.


[új] - No rainbow, no sugar - [új]

Kozkeletu tevedes, az apxs-nek a konfig reszet a statikushoz is felhasznalja, CFLAG-ek, ilyesmik csak abbol jonnek ki.
--
Blog | @hron84

"valahol egy üzemeltetőmaci most mérgesen toppant a lábával" via @snq-