Skocz do zawartości
Marek Miklewicz

Kilka wersji php na jednym serwerze z directadminem - jak to zrobić

Polecane posty

Witam

 

Kupiłem VPSa, żeby sobie w spokoju testować swoje skrypty PHP i chciałbym mieć dostęp do wielu wersji PHP, na pewno 5.2, 5.3 i 5.4 na jednej maszynie, fajnie buy było jakby jeszcze się dało php 4 wstawić no ale przy tym starociu się nie upieram. Wiem, że 5.2 już nie rozwijane i w ogóle ale to tylko na mój użytek, znalazłem kilka opisów jak zrobić to o co mi chodzi ale raczej rzecz dotyczy PHP 5.2 jako domyślnego CLI i 5.3 opcjonalnie jako CGI a ja bym chciał miećobie wersje jako CGI + do tego jeszcze PHP 5.4 i 4 jeśli się da, najlepiej wszystko jako CGI a jeśli się tak nie da to przynajmniej 5.3 jako CGI domyślnie a 5.2 jako CLI opcjonalnie.

 

Jak coś takiego osiągnąć? Podejżewam, że możnaby zainstalować PHP 5.3 normalnie z custombuild a resztę dokompilować normalnie z palca podając prefix oddzielny dla każdej wersji ale co później, jak się przełączyć między różnymi wersjami PHP i co więcej musiałbym zrobić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

dwie wersje zrób sobie z custombuilda, dwie dodatkowe "z palca" z zachowaniem takiej samej struktury. Potem mała edycja szablonów w /custom + build rewrite_confs i będziesz mógł to ustawić z htaccesa.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

dwie wersje zrób sobie z custombuilda, dwie dodatkowe "z palca" z zachowaniem takiej samej struktury. Potem mała edycja szablonów w /custom + build rewrite_confs i będziesz mógł to ustawić z htaccesa.

 

Czy mozesz opisac jak to zrobić i co wyedytować? Robiłem php 5.3 i 5.2 wg. opisu z tego linku zacytuję:

 

 

 

cd /usr/local/directadmin/custombuild

./build set custombuild 1.2

./build update

./build set autover no

cp -Rp configure custom

cp -pf configure/suphp/configure.php5 custom/suphp/configure.php6

perl -pi -e 's/php5:/phprep:/' versions.txt

perl -pi -e 's/php6/php5/' versions.txt

perl -pi -e 's/phprep/php6/' versions.txt

./build set cloudlinux yes

./build set php5_ver 5.3

./build set php6_cgi no

./build set php6_cli yes

./build set php5_cgi yes

./build set php5_cli no

./build php n

 

 

ale przy budowaniu php dostaję taki komunikat:

 

 

[root@s1 custombuild]# ./build php n

Downloading php-.tar.gz...

--2013-05-30 23:15:20-- http://files4.directadmin.com/services/custombuild/php-.tar.gz

Resolving files4.directadmin.com... 193.105.61.2

Connecting to files4.directadmin.com|193.105.61.2|:80... connected.

HTTP request sent, awaiting response... 404 Not Found

2013-05-30 23:15:20 ERROR 404: Not Found.

 

Downloaded file /usr/local/directadmin/custombuild/php-.tar.gz does not exist or is empty after download

cwd is: /usr/local/directadmin/custombuild

Fileserver might be down, using the backup file server..

--2013-05-30 23:15:20-- http://69.30.193.202/services/custombuild/php-.tar.gz

Connecting to 69.30.193.202:80... connected.

HTTP request sent, awaiting response... 404 Not Found

2013-05-30 23:15:21 ERROR 404: Not Found.

 

MD5 Checksum on php-.tar.gz passed.

You cannot install curl, because you do not have it set in options.conf file.

*** Cannot find /usr/local/directadmin/custombuild/php-.tar.gz. Aborting ***

[root@s1 custombuild]#

 

 

wygląda jakby nie było pliku na serwerze z plikami DA z tym, że plik powinien być chyba php-5.2.17.tar.gz a nie php-.tar.gz czy błąd jest w tym co zacytowałem, czy ja coś źle robię, czy jpo prostu na serwerach DA nie ma już php 5.2

Edytowano przez Marek Miklewicz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

Ten opis jest nieaktualny. w CustomBuild 2.0 nie ma już opcji php6, jest wersja1 i wersja2. Ustawiasz to w opcjach custombuild i potem klasycznie build php.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No tak tylko, że w CB 2.0 jest php 5.3 i 5.4 o ile wiem a nie 5.2 czy zatem da się jakoś wymusić php 5.2? To raz a po drugie ja nie wybierałem custombuild 2.0 a starszy custombuild 1.2 czy w wersji 1.2 nie da się pobrać php 5.2? Ogólnie najbardziej zadowolony bym był z custombuild 2.0 + php 5.3 i PHP 5.2, da się tak zrobić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

Z CB 2.0 zrób sobie 1: 5.4 i 2: 5.3, a 5.2 "z palca" samodzielnie. To chyba najbardziej rozsądne wyjście i z perspektywami na bezproblemowe aktualizacje w przyszłości.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok a możesz mnie naprowadzić jak "z palca" zrobiić 5.2 tzn. pewnie wezne z phpinfo od 5.3 przelaczniki do ./configure i dodam prefix np. /usr/local/php52 ale co dalej?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

- w katalogu CB masz /configure/fastcgi/configure.phpXX (53/54/55) - z tego sobie weź dane, zrób podobne dla 5.2.

- skompiluj sobie w taką sama strukturę czyli do /usr/local/php52

- w htaccess

<FilesMatch \.php$>

FCGIWrapper "/usr/local/safe-bin/fcgid52.sh /home/user/jego.ewentualne.php.ini" .php
</FilesMatch>
uprzednio oczywiście dorzucając /usr/local/safe-bin/fcgid52.sh

 

To chyba powinno wystarczyć bez kombinowania z custom/virtual_host2.conf, jak nie to tam jeszcze trzeba będzie coś dorzucić.

Pisze tak z pamięci bo dawno już nie robiłem 5.2 (lada chwila będzie już 5.5).

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

wszystko jest jasne po za tym skryptem /usr/local/safe-bin/fcgid52.sh

rozumiem, że muszę ten skrypt jakoś napisać ale co w nim ma być?

 

no i rozumiem, że chcąc dać userowi 5.2 z globalnym plikiem php.ini dla wersji 5.2 wpis w .htaccess powinien wyglądać tak:

 

<FilesMatch \.php52>

FCGIWrapper "/usr/local/safe-bin/fcgid52.sh" .php
</FilesMatch>

 

czy też <FilesMatch \.php$> ma pozostać

 

Edytowano przez Marek Miklewicz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość

/usr/local/safe-bin/fcgid52.sh nie będziesz pisał, a weźmiesz z w /usr/local/safe-bin/fcgid53.sh ;) (to oczywiście będzie po ustawieniu już sobie standardowego konfigu z CB 2.0).

 

Filematch bez zmian w stosunku tego co podałem. Jak nie znajdzie php.ini to wczyta standardowe.

 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ok to jeszcze 3 pytania

 

1. czy po za podaą przez Ciebie linijką powinienem dodać jeszcze jakoś rozszerzenia obsługiwane przez konkretną wersję czy też mogę założyć, że ta linia pozwala na obsługę wszystkich plików pokroju php, phtml, php4, php5 itp?

 

2. czy lokalizacja php.ini usera musi byc w /home/user czy mogę podać np. /usr/local/directadmin/data/users/username/php.ini?

 

3. czy w ten sam sposób mogę wrzucić php4? Bo obawiam się czy staroć 4 pójdzie po fcgid

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 


1. czy po za podaą przez Ciebie linijką powinienem dodać jeszcze jakoś rozszerzenia obsługiwane przez konkretną wersję czy też mogę założyć, że ta linia pozwala na obsługę wszystkich plików pokroju php, phtml, php4, php5 itp?

Użyj mózgu, przeanalizuj w dokumentacji co ta linijka robi, a nie czekasz na wszystko podane na złotej tacy...

 

 

 

 

czy lokalizacja php.ini usera musi byc w /home/user czy mogę podać np. /usr/local/directadmin/data/users/username/php.ini?

Pytanie to jest już nieco trudniejsze i tu można pobłądzić - ścieżka może być dowolna, ale użytkownik którego dotyczy musi mieć możliwość odczytu tego pliku. Więc bez specyficznych zabiegów np. /root/php.ini niekoniecznie zadziała.

Sprawdzisz to wywołując z uprawnieniami danego użytkownika (np. przez sudo) polecenie cat /sciezka/php.ini

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

 

Użyj mózgu, przeanalizuj w dokumentacji co ta linijka robi, a nie czekasz na wszystko podane na złotej tacy...

 

 

 

 

Rany więcej się napisałeś tą jedną linijką docinków niż gdybyś odpowiedział mi na pytanie, na które nadal nie znam odpowiedzi. Dla jasności o ile dobrze rozumiem to ta linijka określa którą wersję php użyć + jaki do niej php.ini dobrać, nie wyjaśnia to jednak mojego pytania czy ten wpis pozwoli mi obsłużyć wszystkie rozszerzenia czy nie. Dokumentację i opisy czytałem dowodem na to jest cytat kroków jakie podjąłem więc bardzo proszę nie zarzucaj mi, żer czekam na wszystko na gotowe.

 

 

Pytanie to jest już nieco trudniejsze i tu można pobłądzić - ścieżka może być dowolna, ale użytkownik którego dotyczy musi mieć możliwość odczytu tego pliku. Więc bez specyficznych zabiegów np. /root/php.ini niekoniecznie zadziała.

Sprawdzisz to wywołując z uprawnieniami danego użytkownika (np. przez sudo) polecenie cat /sciezka/php.ini

 

 

Za drugą część odpowiedzi serdecznie dziękuję ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Coś nie za dokładnie przeczytałeś, co robi FilesMatch.

Gdybyś przeczytał, to wiedział byś, że dyrektywa wymuszająca wrapper FCGI

będzie tyczyła się dokładnie takich żądań, jakie zadeklarujesz w FilesMatch.

Podajesz tam wyrażenie regularne, więc jak wpiszesz \.php$ to będzie tyczyło się

wszystkiego, co ma końcówkę .php. Jak wpiszesz ^ala.*\.php$ będzie tyczyć się

plików rozpoczynających się od ala i kończących na .php.

Jak zadeklarujesz .php\d{2}$ to będziesz miał .php[cyfra][cyfra]

itd.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pisze tak z pamięci bo dawno już nie robiłem 5.2 (lada chwila będzie już 5.5).

 

 

Przy instalacji DA i wybraniu CB 2.0 instaluje sie domyślnie php5.5. RC1 jako jedyna wersja php na serwerze.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

 

Przy instalacji DA i wybraniu CB 2.0 instaluje sie domyślnie php5.5. RC1 jako jedyna wersja php na serwerze.

 

 

Prawdę mówiąc nigdy mi się to nie stało, za każdym razem mam wszystko tak jak sobie ustawię w opcjach.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Żle sformulowałem - chodziło mi o to że przy świeżej instalacji wybierasz 4 ( czyli CB 2.0 ) i z automatu już instaluje 5.5 jako php_ver1.

Oczywiście później można w options.conf ustawić co się komu podoba, czyli dodać drugą wersje php itp.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

W takim razie możliwe, że nawet nie zauważyłem bo koniec instalki DA to dopiero początek zabawy ;)

Jeszcze miesiąc/dwa i nie będzie to wielkim problemem ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeszcze miesiąc/dwa i nie będzie to wielkim problemem ;)

 

Możesz rozwinąć co masz na myśli?

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

a wracając do linijki <FilesMatch \.php$> czy ja dobrze rozumiem, że jeśli wstawię zamiast <FilesMatch \.php$> <FilesMatch \.ph*> to powinny być akceptowane wszystkie rozszeżenia jakie mnie interesują a więc i php i phtml czy php5

 

P.S właśnie przeinstalowuję DA bo trochę namieszałem, a że na VPSie nic nie ma to szybciej będzie mi postawić od zera niżodkręcać i instalator pyta czy zainstalować defaultową konfigurację apache + php, wybrałem "no" i pojawiło się pytanie o wersję php więc przy instalacji nadal można wybrać co się chce

 

P.S wybrałem php 5.3 jako php-fpm i php 5.4 jako fastcgi. Czy to dobry wybór jeśli chcę mieć dostęp do php 5.2?

 

P.S 2 jeszcze jedno być może głupie pytanie ale czy php 5.2.17 mam ściągnąć z oficjalnej strony czy szukać paczki na serwerach directadmina?

 

 

 

Edytowano przez Marek Miklewicz (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

 

Możesz rozwinąć co masz na myśli?

 

 

To, że lada chwila wyjdzie PHP 5.5 oficjalnie (czerwiec/lipiec wg planów).

 

 

 

 

P.S wybrałem php 5.3 jako php-fpm i php 5.4 jako fastcgi. Czy to dobry wybór jeśli chcę mieć dostęp do php 5.2?

W tej chwili wybierz 2x fastcgi gdyż obsługa php-fpm ma błędy (są już patche na apacha ale nie jestem pewien czy już są dostępne czy będą wraz z następną wersją DA, niepamietam, teoretycznie to działka CB więc już powinny być choć u siebie nie widzę)

 

 

P.S 2 jeszcze jedno być może głupie pytanie ale czy php 5.2.17 mam ściągnąć z oficjalnej strony czy szukać paczki na serwerach directadmina?

Obojętne.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Właśnie próbuję skompilować php 5.2 zgodnie z tym co napisał nrm ale gdy wydaję polecenie

./configure --prefix=/usr/local/php52 --program-suffix=52 --enable-fastcgi --enable-force-cgi-redirect --with-config-file-scan-dir=/usr/local/php52/lib/php.conf.d --with-curl=/usr/local/lib --with-gd --enable-gd-native-ttf --with-gettext --with-jpeg-dir=/usr/local/lib --with-freetype-dir=/usr/local/lib --with-libxml-dir=/usr/local/lib --with-kerberos --with-openssl --with-mcrypt --with-mhash --with-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=mysqlnd --with-pcre-regex=/usr/local --with-pdo-mysql=mysqlnd --with-pear --with-png-dir=/usr/local/lib --with-xsl --with-zlib --with-zlib-dir=/usr/local/lib --enable-zip --with-iconv=/usr/local --enable-bcmath --enable-calendar --enable-ftp --enable-sockets --enable-soap --enable-mbstring --with-icu-dir=/usr/local/icu --enable-intl

dostaję błąd

 

checking for MySQLi support... yes
checking whether to enable embedded MySQLi support... no
mysql_config not found
configure: error: Please reinstall the mysql distribution

a mysql działa bo widać w phpinfo od 5.3 czy 5.4 natomiast polecenie locate mysql_config zwraca:

/usr/bin/mysql_config
/usr/bin/mysql_config_editor
/usr/share/man/man1/mysql_config.1.gz
/usr/share/man/man1/mysql_config_editor.1.gz

więc próbowałem zamienić --with-mysqli=mysqlnd na --with-mysqli=/usr/bin ale bez efektu, co robię nie tak proszę ponóżcie dobrzy ludzie... ps parametry wzięte z /usr/local/directadmin/custombuild/configure/fastcgi/configure.php53 i pozmieniane ścieżki na analogiczne tylko php52.wersja mysql to 5.6

 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

zmieniłem opcje polecenia ./configure na następujące.

./configure --prefix=/usr/local/php52' '--program-suffix=52' '--enable-fastcgi' '--enable-force-cgi-redirect' '--with-config-file-scan-dir=/usr/local/php52/lib/php.conf.d' '--with-curl=/usr/local/lib' '--with-gd' '--enable-gd-native-ttf' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-freetype-dir=/usr/local/lib' '--with-libxml-dir=/usr/local/lib' '--with-kerberos' '--with-openssl' '--with-mcrypt' '--with-mhash' '--with-mysql=/var/lib/mysql' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-mysqli=/usr/bin/mysql_config' '--with-pcre-regex=/usr/local' '--with-pdo-mysql=/var/lib/mysql' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-xsl' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--enable-zip' '--with-iconv=/usr/local' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-sockets' '--enable-soap' '--enable-mbstring' '--enable-intl

i skrypt configure przeszedł poprawnie ale za to przy make dostaję taki błąd

/bin/sh /usr/local/src/php52/php-5.2.17/libtool --silent --preserve-dup-deps --mode=compile gcc  -Iext/dom/ -I/usr/local/src/php52/php-5.2.17/ext/dom/ -DPHP_ATOM_INC -I/usr/local/src/php52/php-5.2.17/include -I/usr/local/src/php52/php-5.2.17/main -I/usr/local/src/php52/php-5.2.17 -I/usr/local/src/php52/php-5.2.17/ext/date/lib -I/usr/local/include/libxml2 -I/usr/local/src/php52/php-5.2.17/TSRM -I/usr/local/src/php52/php-5.2.17/Zend    -I/usr/local/include -g -O2  -c /usr/local/src/php52/php-5.2.17/ext/dom/node.c -o ext/dom/node.lo
/usr/local/src/php52/php-5.2.17/ext/dom/node.c: In function ‘dom_canonicalization’:
/usr/local/src/php52/php-5.2.17/ext/dom/node.c:1953: error: dereferencing pointer to incomplete type
/usr/local/src/php52/php-5.2.17/ext/dom/node.c:1955: error: dereferencing pointer to incomplete type
make: *** [ext/dom/node.lo] Błąd 1

co mogę zrobić? Dodam, że paczkę php 5.2.17 pobrałem z oficjalnej strony php, noże lepiej szukać php 5.2.17 na serwerach DirectAdmina

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×