PHP: Różnice pomiędzy wersjami
(→Skrypty PHP bez limitów czasowych) |
|||
(Nie pokazano 52 wersji utworzonych przez 5 użytkowników) | |||
Linia 3: | Linia 3: | ||
===Wstępna konfiguracja domeny=== | ===Wstępna konfiguracja domeny=== | ||
− | Do uruchomienia strony napisanej w ''PHP'' należy | + | Do uruchomienia strony napisanej w ''PHP'' należy najpierw zadbać o prawidłową konfigurację samej domeny. Przed przystąpieniem do dalszych kroków należy upewnić się, że: |
* Domena jest prawidłowo dodana i skonfigurowana w naszym systemie [[DNS]], | * Domena jest prawidłowo dodana i skonfigurowana w naszym systemie [[DNS]], | ||
− | * Została dodana [[WWW|Strona WWW]] | + | * Została dodana [[WWW|Strona WWW]] ze wskazaniem typu ''PHP''. |
=== Konfiguracja PHP === | === Konfiguracja PHP === | ||
− | Konfiguracja interpretera PHP znajduje się w pliku <code class="directory">/usr/home/''login''/.user.ini</code>. Istnieje możliwość ustalenia własnego pliku <code class="directory">.user.ini</code>, oddzielnie dla każdego katalogu. Można definiować konfigurację widoczną w <code>phpinfo()</code>, tę z [http://php.net/manual/ | + | Konfiguracja interpretera PHP znajduje się w pliku <code class="directory">/usr/home/''login''/.user.ini</code>. Istnieje możliwość ustalenia własnego pliku <code class="directory">.user.ini</code>, oddzielnie dla każdego katalogu. Można definiować konfigurację widoczną w <code>phpinfo()</code>, tę z [http://php.net/manual/en/ini.list.php listy dyrektyw] opisaną jako PHP_INI_PERDIR lub PHP_INI_ALL oraz niektóre zmienne dodatkowych modułów. |
==== Przykłady ==== | ==== Przykłady ==== | ||
Linia 18: | Linia 18: | ||
Zwiększenie ilości pamięci dla interpretatora PHP: | Zwiększenie ilości pamięci dla interpretatora PHP: | ||
− | memory_limit = | + | memory_limit = 768M |
Zwiększenie max_execution_time: | Zwiększenie max_execution_time: | ||
Linia 28: | Linia 28: | ||
log_errors = on | log_errors = on | ||
error_log = /usr/home/''login''/domains/''domena''/phperror.log | error_log = /usr/home/''login''/domains/''domena''/phperror.log | ||
+ | Zmiana domyślnej lokalizacji folderu plików tymczasowych /tmp | ||
+ | upload_tmp_dir = ścieżka/do/katalogu | ||
+ | [https://www.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering Wyłączenie buforowania wyjścia dla plików ] (X-Accel-Buffering) | ||
+ | output_buffering=off | ||
− | + | ==== Ładowanie dodatkowych modułów PHP ==== | |
− | + | Możliwość ładowania dodatkowych modułów PHP jest możliwe poprzez wpis w .user.ini: | |
+ | anp.extensions="nazwamodułu" | ||
+ | Moduł musi być uprzednio zainstalowany przez nas w systemie. Obecnie dostępne moduły: amqp (od PHP 8.1), | ||
+ | sodium (PHP 7.1: libsodium, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2: sodium), phalcon (PHP do wersji 7.4 włącznie), grpc, yaml (od PHP 7.1 do PHP 8.2), sysvsem (od PHP 7.3 do PHP 8.2), swoole (od PHP 8.0 do PHP 8.2). | ||
− | + | Aby rozszerzyć możliwość operacji przez stronę typu PHP ponad domyślne katalogi (/usr/home/login/domains/domena/public_html:/tmp:/usr/share:/usr/local/share:/dev:/tmp:/usr/share:/usr/local/share:/dev) należy skorzystać konfiguracji open_basedir dostępnej bezpośrednio w panelu w "Szczegóły" przy danej witrynie www typu PHP. | |
+ | |||
+ | ==== Zmiana ustawień PHP dla PHP CLI ==== | ||
+ | |||
+ | W celu zmiany opcji dla PHP CLI plik konfiguracyjny <code>.user.ini</code> z zawartością musi zostać utworzony w katalogu domowym. Po jego utworzeniu należy wydać polecenie: <syntaxhighlight lang="bash">echo 'export PHP_INI_SCAN_DIR=/usr/home/${USER}' >> $HOME/.bash_profile && source $HOME/.bash_profile</syntaxhighlight> | ||
==== Wersja PHP ==== | ==== Wersja PHP ==== | ||
− | + | Domyślną wersją PHP jest 8.1. | |
− | + | ||
− | + | Wyboru wersji PHP dla strony można dokonać w utworzonym przez siebie pliku <code class="directory">/usr/home/''login''/domains/''domena''/.htaccess</code>. Należy wtedy dopisać do niego jedną z poniższych linii. | |
AddType application/x-httpd-php56 .php | AddType application/x-httpd-php56 .php | ||
+ | AddType application/x-httpd-php70 .php | ||
+ | AddType application/x-httpd-php71 .php | ||
+ | AddType application/x-httpd-php72 .php | ||
+ | AddType application/x-httpd-php73 .php | ||
+ | AddType application/x-httpd-php74 .php | ||
+ | AddType application/x-httpd-php80 .php | ||
+ | AddType application/x-httpd-php81 .php | ||
+ | AddType application/x-httpd-php82 .php | ||
+ | AddType application/x-httpd-php83 .php | ||
− | Ponadto na serwerze dostępne są binarki PHP CLI: | + | Ponadto na serwerze dostępne są binarki PHP CLI pod poleceniami: |
{{szablon:Prompt}}php | {{szablon:Prompt}}php | ||
− | |||
− | |||
{{szablon:Prompt}}php56 | {{szablon:Prompt}}php56 | ||
+ | {{szablon:Prompt}}php70 | ||
+ | {{szablon:Prompt}}php71 | ||
+ | {{szablon:Prompt}}php72 | ||
+ | {{szablon:Prompt}}php73 | ||
+ | {{szablon:Prompt}}php74 | ||
+ | {{szablon:Prompt}}php80 | ||
+ | {{szablon:Prompt}}php81 | ||
+ | {{szablon:Prompt}}php82 | ||
+ | {{szablon:Prompt}}php83 | ||
+ | |||
+ | Aby uruchamiać daną wersję PHP CLI bez podawania jej wersji w nazwie binarki należy wydać polecenia (przykład dla wersji 7.1): | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | mkdir ~/bin | ||
+ | ln -s /usr/local/bin/php74 ~/bin/php | ||
+ | echo 'export PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile | ||
+ | source $HOME/.bash_profile | ||
+ | </syntaxhighlight> | ||
+ | |||
oraz CGI-FCGI: | oraz CGI-FCGI: | ||
{{szablon:Prompt}}php-cgi | {{szablon:Prompt}}php-cgi | ||
− | |||
− | |||
{{szablon:Prompt}}php56-cgi | {{szablon:Prompt}}php56-cgi | ||
+ | {{szablon:Prompt}}php70-cgi | ||
+ | {{szablon:Prompt}}php71-cgi | ||
+ | {{szablon:Prompt}}php72-cgi | ||
+ | {{szablon:Prompt}}php73-cgi | ||
+ | {{szablon:Prompt}}php74-cgi | ||
+ | {{szablon:Prompt}}php80-cgi | ||
+ | {{szablon:Prompt}}php81-cgi | ||
+ | {{szablon:Prompt}}php82-cgi | ||
==== Własne strony błędów ==== | ==== Własne strony błędów ==== | ||
Linia 67: | Linia 109: | ||
| 404 || errors/404.html || plik/katalog nie istnieje. | | 404 || errors/404.html || plik/katalog nie istnieje. | ||
|- | |- | ||
− | | 500 || errors/500.html || błąd serwera ( | + | | 500 || errors/500.html || błąd serwera (najczęściej błędne wpisy w .htaccess). |
|- | |- | ||
| 502 || errors/502.html || odrzucenie żądania przez backend/fastcgi (php) lub przekroczenie limitu interpretatorów. | | 502 || errors/502.html || odrzucenie żądania przez backend/fastcgi (php) lub przekroczenie limitu interpretatorów. | ||
Linia 76: | Linia 118: | ||
|- | |- | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Skrypty PHP bez limitów czasowych === | === Skrypty PHP bez limitów czasowych === | ||
Linia 96: | Linia 128: | ||
# Zalogować się przez ssh. | # Zalogować się przez ssh. | ||
# Przejść do folderu ze skryptami php (na przykład public_html wybranej domeny) <code>cd domains/''domena''/public_html</code>. | # Przejść do folderu ze skryptami php (na przykład public_html wybranej domeny) <code>cd domains/''domena''/public_html</code>. | ||
− | # Uruchomić serwer na zarezerwowanym porcie <code> | + | # Uruchomić serwer na zarezerwowanym porcie <code>php74 -S 0.0.0.0:''ZAREZERWOWANY_PORT''</code> |
− | #* W tym kroku można również wybrać inną wersję php, na przykład | + | #* W tym kroku można również wybrać inną wersję php, na przykład php72. |
− | #* Aby serwer działał po wylogowaniu się, należy go uruchomić w screenie <code>screen -dm bash -c " | + | #* Aby serwer działał po wylogowaniu się, należy go uruchomić w screenie <code>screen -dm bash -c "php74 -S 0.0.0.0:''ZAREZERWOWANY_PORT''"</code>. |
# Opcjonalnie: dodać [[Strona WWW| stronę www]] typu proxy na zarezerwowany port. | # Opcjonalnie: dodać [[Strona WWW| stronę www]] typu proxy na zarezerwowany port. | ||
− | Dostęp do skryptów jest przez adres <nowiki>http://sX.mydevil.net:''ZAREZEROWANY_PORT''</nowiki>. Na przykład na serwerze s4, | + | Dostęp do skryptów jest przez adres <nowiki>http://sX.mydevil.net:''ZAREZEROWANY_PORT''</nowiki>. Na przykład na serwerze s4, zarezerwowanym porcie 12345 dostęp do wcześniej wspomnianego skryptu to <nowiki>http://s4.mydevil.net:12345/import_produktow.php</nowiki>. |
+ | |||
+ | === Korzystanie z funkcji mail() === | ||
+ | |||
+ | Przed skorzystaniem z funkcji mail() prosimy zapoznać się z [[Poczta#Uwagi_dotycz.C4.85ce_wysy.C5.82ki_maili_poprzez_strony_i_aplikacje| zasadami]] które jej dotyczą. | ||
[[Category:PHP]] | [[Category:PHP]] |
Aktualna wersja na dzień 09:02, 29 lip 2024
PHP to obiektowy język programowania zaprojektowany do generowania stron internetowych i budowania aplikacji webowych w czasie rzeczywistym.
Spis treści
Wstępna konfiguracja domeny
Do uruchomienia strony napisanej w PHP należy najpierw zadbać o prawidłową konfigurację samej domeny. Przed przystąpieniem do dalszych kroków należy upewnić się, że:
- Domena jest prawidłowo dodana i skonfigurowana w naszym systemie DNS,
- Została dodana Strona WWW ze wskazaniem typu PHP.
Konfiguracja PHP
Konfiguracja interpretera PHP znajduje się w pliku /usr/home/login/.user.ini
. Istnieje możliwość ustalenia własnego pliku .user.ini
, oddzielnie dla każdego katalogu. Można definiować konfigurację widoczną w phpinfo()
, tę z listy dyrektyw opisaną jako PHP_INI_PERDIR lub PHP_INI_ALL oraz niektóre zmienne dodatkowych modułów.
Przykłady
W poniższym przykładzie zostanie ustawiona zmienna error_reporting dla domeny domena. W tym celu należy zapisać do pliku /usr/home/login/domains/domena/.user.ini
zawartość:
error_reporting = E_ALL | E_WARNING
Zwiększenie ilości pamięci dla interpretatora PHP:
memory_limit = 768M
Zwiększenie max_execution_time:
max_execution_time=360
Zwiększenie max_input_vars:
max_input_vars = 6000
Zapisywanie error logów php do pliku:
display_errors = off log_errors = on error_log = /usr/home/login/domains/domena/phperror.log
Zmiana domyślnej lokalizacji folderu plików tymczasowych /tmp
upload_tmp_dir = ścieżka/do/katalogu
Wyłączenie buforowania wyjścia dla plików (X-Accel-Buffering)
output_buffering=off
Ładowanie dodatkowych modułów PHP
Możliwość ładowania dodatkowych modułów PHP jest możliwe poprzez wpis w .user.ini:
anp.extensions="nazwamodułu"
Moduł musi być uprzednio zainstalowany przez nas w systemie. Obecnie dostępne moduły: amqp (od PHP 8.1), sodium (PHP 7.1: libsodium, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2: sodium), phalcon (PHP do wersji 7.4 włącznie), grpc, yaml (od PHP 7.1 do PHP 8.2), sysvsem (od PHP 7.3 do PHP 8.2), swoole (od PHP 8.0 do PHP 8.2).
Aby rozszerzyć możliwość operacji przez stronę typu PHP ponad domyślne katalogi (/usr/home/login/domains/domena/public_html:/tmp:/usr/share:/usr/local/share:/dev:/tmp:/usr/share:/usr/local/share:/dev) należy skorzystać konfiguracji open_basedir dostępnej bezpośrednio w panelu w "Szczegóły" przy danej witrynie www typu PHP.
Zmiana ustawień PHP dla PHP CLI
W celu zmiany opcji dla PHP CLI plik konfiguracyjny.user.ini
z zawartością musi zostać utworzony w katalogu domowym. Po jego utworzeniu należy wydać polecenie: echo 'export PHP_INI_SCAN_DIR=/usr/home/${USER}' >> $HOME/.bash_profile && source $HOME/.bash_profile
Wersja PHP
Domyślną wersją PHP jest 8.1.
Wyboru wersji PHP dla strony można dokonać w utworzonym przez siebie pliku /usr/home/login/domains/domena/.htaccess
. Należy wtedy dopisać do niego jedną z poniższych linii.
AddType application/x-httpd-php56 .php AddType application/x-httpd-php70 .php AddType application/x-httpd-php71 .php AddType application/x-httpd-php72 .php AddType application/x-httpd-php73 .php AddType application/x-httpd-php74 .php AddType application/x-httpd-php80 .php AddType application/x-httpd-php81 .php AddType application/x-httpd-php82 .php AddType application/x-httpd-php83 .php
Ponadto na serwerze dostępne są binarki PHP CLI pod poleceniami:
$ php $ php56 $ php70 $ php71 $ php72 $ php73 $ php74 $ php80 $ php81 $ php82 $ php83
Aby uruchamiać daną wersję PHP CLI bez podawania jej wersji w nazwie binarki należy wydać polecenia (przykład dla wersji 7.1):
mkdir ~/bin ln -s /usr/local/bin/php74 ~/bin/php echo 'export PATH=$HOME/bin:$PATH' >> $HOME/.bash_profile source $HOME/.bash_profile
oraz CGI-FCGI:
$ php-cgi $ php56-cgi $ php70-cgi $ php71-cgi $ php72-cgi $ php73-cgi $ php74-cgi $ php80-cgi $ php81-cgi $ php82-cgi
Własne strony błędów
Użytkownik może z łatwością utworzyć własne strony błędów dla swojej strony. W tym celu należy w głównym katalogu domeny (np. /usr/home/login/domains/domena/public_html/
) utworzyć katalog errors
i umieszczać w nim statyczne strony błędów. Kod PHP nie zostanie wykonany, tylko wyświetlony użytkownikowi. Poniżej prezentujemy listę stron błędów, które użytkownik może zmieniać:
Kod błędu | Plik ze stroną | Opis błędu |
---|---|---|
401 | errors/401.html | wyświetlany po błędnej autoryzacji. |
403 | errors/403.html | brak dostępu do pliku/katalogu. |
404 | errors/404.html | plik/katalog nie istnieje. |
500 | errors/500.html | błąd serwera (najczęściej błędne wpisy w .htaccess). |
502 | errors/502.html | odrzucenie żądania przez backend/fastcgi (php) lub przekroczenie limitu interpretatorów. |
503 | errors/503.html | przekroczenie limitu interpretatorów. |
504 | errors/504.html | przekroczenie czasu na wykonanie żądania. |
Skrypty PHP bez limitów czasowych
Skrypty PHP bez limitów czasowych można uruchamiać po zalogowaniu się przez ssh. Aby uruchomić skrypt należy skorzystać z php cli, na przykład:
php ~/domains/sklep.domena.pl/public_html/import_produktow.php
Drugim sposobem jest uruchomienie wbudowanego serwera webowego w PHP. Aby to zrobić należy:
- zarezerwować port TCP.
- Zalogować się przez ssh.
- Przejść do folderu ze skryptami php (na przykład public_html wybranej domeny)
cd domains/domena/public_html
. - Uruchomić serwer na zarezerwowanym porcie
php74 -S 0.0.0.0:ZAREZERWOWANY_PORT
- W tym kroku można również wybrać inną wersję php, na przykład php72.
- Aby serwer działał po wylogowaniu się, należy go uruchomić w screenie
screen -dm bash -c "php74 -S 0.0.0.0:ZAREZERWOWANY_PORT"
.
- Opcjonalnie: dodać stronę www typu proxy na zarezerwowany port.
Dostęp do skryptów jest przez adres http://sX.mydevil.net:''ZAREZEROWANY_PORT''. Na przykład na serwerze s4, zarezerwowanym porcie 12345 dostęp do wcześniej wspomnianego skryptu to http://s4.mydevil.net:12345/import_produktow.php.
Korzystanie z funkcji mail()
Przed skorzystaniem z funkcji mail() prosimy zapoznać się z zasadami które jej dotyczą.