Skocz do zawartości
  • Cześć!

    Witaj na forum RootNode - aby pisać u nas musisz się zarejestrować, a następnie zalogować. Posty pisane z kont niezarejestrowanych nie są widoczne publicznie.

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Pamiętaj, że możesz też wersję zmienić ręcznie, za pomocą odpowiedniego wpisu w .htaccess w danej domenie/katalogu.

Na podstawie tego, myślę że nie byłoby trudne stworzenie takiego pluginu, jeżeli koniecznie miałoby być zarządzanie tym z poziomu panelu DirectAdmin,

 

Ogólnie, aby to działało (ustawianie wersji PHP w .htaccess) trzeba dodać konkretne wersje, jakie mają być obsługiwane w .htaccess. Robi się to w pliku: /etc/container/php.handler, np.:

application/x-lsphp54 /opt/alt/php54/usr/bin/lsphp
application/x-lsphp56 /opt/alt/php56/usr/bin/lsphp
application/x-lsphp70 /opt/alt/php70/usr/bin/lsphp

W moim przypadku dla PHP działającego na: mod_lsapi

 

W .htaccess danej domeny/katalogu dodajesz potem (dla PHP 5.6):

AddType application/x-lsphp56 .php

 

Więcej szczegółów na ten temat: https://www.cloudlinux.com/cloudlinux-os-blog/entry/different-php-versions-per-directories-using-mod-lsapi

Edytowane przez Desavil
  • Lubię 1
Opublikowano
Cytuj

Na podstawie tego, myślę że nie byłoby trudne stworzenie takiego pluginu, jeżeli koniecznie miałoby być zarządzanie tym z poziomu panelu DirectAdmin,

Taki plugin istnieje w sieci, nazywa się phpselector.

Opublikowano

W DirectAdmin masz możliwość instalacji dwóch wersji interpretatora języka PHP przy (ponownej) instalacji środowiska. 

  • 3 tygodnie później...
Opublikowano
2 godziny temu, Halborwan napisał:

Taka wtyczka jest do napisania w ciągu maks. 2 godzin.

 

phpver.png

To w imieniu społeczności zachęcam do publikacji kodu źródłowego, przecież to są tylko 2h pracy, więc nakład pracy znikomy, a społeczności się pewnie przyda :P

Opublikowano

W imieniu własnym zachęcam do rozwijania własnych zdolności oskryptowania DA i kwotę przeznaczoną na

zakup wtyczki przeznaczyć na własne doszkalanie, zakup literatury itp.

 

Podpowiedź:

virtual_host2*.conf pozbyłem się sekcji

|?OBDP1=|
|*if PHP1_RELEASE!="0.000000"|
|?OBDP1=:/usr/local/php`PHP1_RELEASE`/lib/php/|
|*endif|
|?OBDP2=|
|*if PHP2_RELEASE!="0.000000"|
|?OBDP2=:/usr/local/php`PHP2_RELEASE`/lib/php/|
|*endif|

i

|*if HAVE_PHP1_FPM="1"|
        <FilesMatch "\.(inc|php|phtml|phps|php|PHP1_RELEASE|)$">
                AddHandler "proxy:unix:/usr/local/php|PHP1_RELEASE|/sockets/|USER|.sock|fcgi://localhost" .inc .php .phtml .php|PHP1_RELEASE|
        </FilesMatch>
|*endif|

|*if HAVE_PHP2_FPM="1"|
        <FilesMatch "\.(inc|php|phtml|phps|php|PHP2_RELEASE|)$">
                AddHandler "proxy:unix:/usr/local/php|PHP2_RELEASE|/sockets/|USER|.sock|fcgi://localhost" .php|PHP2_RELEASE|
        </FilesMatch>
|*endif|

|*if HAVE_PHP1_FPM_OLD="1"|
        #Make sure you're running Apache 2.4.10 or newer.
|*endif|

|*if HAVE_PHP2_FPM_OLD="1"|
        #Make sure you're running Apache 2.4.10 or newer.
|*endif|
|CUSTOM2|
        <Directory |DOCROOT|>
|CUSTOM3|
|*if CGI=""|
                |ALLOW_OVERRIDE|
                Options -ExecCGI
|*endif|
|*if HAVE_PHP1_FCGI="1"|
                <IfModule mod_fcgid.c>
                        FCGIWrapper '/usr/local/safe-bin/fcgid|PHP1_RELEASE|.sh /usr/local/directadmin/data/users/|USER|/php/|DOMAIN|.ini |FASTCGI_SENDMAIL_FROM| |FASTCGI_OPENBASEDIR| |PHP_MAIL_LOG|' .php
                        <FilesMatch "\.php$">
                                SetHandler fcgid-script
                                Options +ExecCGI
                        </FilesMatch>
                </IfModule>
|*endif|
|*if HAVE_PHP2_FCGI="1"|
                <IfModule mod_fcgid.c>
                        FCGIWrapper '/usr/local/safe-bin/fcgid|PHP2_RELEASE|.sh /usr/local/directadmin/data/users/|USER|/php/|DOMAIN|.ini |FASTCGI_SENDMAIL_FROM| |FASTCGI_OPENBASEDIR| |PHP_MAIL_LOG|' .php|PHP2_RELEASE|
                        <FilesMatch "\.php|PHP2_RELEASE|$">
                                SetHandler fcgid-script
                                Options +ExecCGI
                        </FilesMatch>
                </IfModule>
|*endif|
|*if HAVE_SAFE_MODE="1"|
                php_admin_flag safe_mode |SAFE_MODE|
|*endif|
|*if CLI="1"|
                php_admin_flag engine |PHP|
                php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f |PHP_EMAIL|'
                |CLI_PHP_MAIL_LOG|
|*endif|
|*if OPEN_BASEDIR="ON"|
                php_admin_value open_basedir |OPEN_BASEDIR_PATH|
|*endif|
|*if HAVE_PHP1_CLI="1"|
                <FilesMatch "\.php$">
                        AddHandler application/x-httpd-php|LSPHP1_RELEASE| .php
                </FilesMatch>
|*endif|
|*if HAVE_PHP2_CLI="1"|
                <FilesMatch "\.php|PHP2_RELEASE|$">
                        AddHandler application/x-httpd-php|LSPHP2_RELEASE| .php|PHP2_RELEASE|
                </FilesMatch>
|*endif|
|*if SUPHP="1"|
                suPHP_Engine |PHP|
                suPHP_UserGroup |USER| |GROUP|
|*endif|
|*if HAVE_PHP1_SUPHP="1"|
                <FilesMatch "\.php$">
                        AddHandler x-httpd-php|PHP1_RELEASE| .php
                </FilesMatch>
|*endif|
|*if HAVE_PHP2_SUPHP="1"|
                <FilesMatch \.php|PHP2_RELEASE|$>
                        AddHandler x-httpd-php|PHP2_RELEASE| .php|PHP2_RELEASE|
                </FilesMatch>
|*endif|
        </Directory>

 

następnie użyłem ucieczki do zewn. skryptu - w moim przypadku w php:

|$/usr/local/php/bin/php
<?php
$domain='|DOMAIN|';
$user='|USER|';
$sub='|SUB|';
$docroot='|DOCROOT|';
echo "\n";

include('/usr/local/directadmin/data/templates/custom/genvh.php');
?>

który generuje odpowiednią sekcję konfiguracji dla wybranej wersji PHP.

 

Do kompletu jest również frontend w DA dzięki któremu użytkownik może wybrać wersję php dla konkretnej domeny.

Frontend przekazuje wersję i powyższe zmienne do powyższej sekcji.

Dodatkowo genvh.php ma również określoną domyślną wersję php, której konfiguracja jest generowana gdy użytkownik doda nową domenę.

 

 

  • Lubię 1
Opublikowano

Nie, chcę Cię zachęcić abyś sam spróbował napisać taką wtyczkę bo nie jest to specjalnie trudne.

DA ma bogate możliwości dzięki własnemu oskryptowaniu, oprócz wyboru wersji php dla konkretnej domeny

można dorobić wybór wersji MySQL, limit czasu CPU per domena zużywane przez php (jeśli jest taka funkcjonalność

w os).

 

Chętnie służę pomocą i podpowiedzią.

 

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z forum, wyrażasz zgodę na: Warunki użytkowania, Regulamin, Polityka prywatności.