PHP: Różnice pomiędzy wersjami

 
(Nie pokazano 58 wersji utworzonych przez 6 użytkowników)
Linia 3: Linia 3:
 
===Wstępna konfiguracja domeny===
 
===Wstępna konfiguracja domeny===
  
Do uruchomienia strony napisanej w ''PHP'' należy pierw zadbać o prawidłową konfigurację samej domeny. Przed przystąpieniem do dalszych kroków należy upewnić się, że:
+
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]] z wskazaniem typu ''PHP''.
+
* 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/pl/ini.list.php listy dyrektyw] opisaną jako PHP_INI_PERDIR lub PHP_INI_ALL oraz niektóre zmienne dodatkowych modułów.
+
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 = 256M
+
  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
  
Aby ograniczyć możliwość operacji na plikach przez PHP do określonego drzewa katalogów należy skorzystać z open_basedir. W tym celu należy zapisać do pliku <code class="directory">/usr/home/''login''/domains/''domena''/.user.ini</code> zawartość (ścieżka wskazuje drzewo katalogów):
+
====  Ładowanie dodatkowych modułów PHP ====
  open_basedir = "ścieżka:/tmp"
+
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).
  
Istnieje również możliwość wykorzystania .user.ini przy php cli, w tym celu należy wydać polecenie <code>export PHPRC=/usr/home/''login''</code>, gdzie login to nazwa naszego konta, plik .user.ini należy umieścić w takim wypadku w katalogu domowym.
+
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ślna wersja PHP to 5.4. Wyboru wersji PHP dla strony można dokonać w pliku<code class="directory">/usr/home/''login''/domains/''domena''/.htaccess</code>. Należy wtedy dopisać do niego jedną z poniższych linii.
+
Domyślną wersją PHP jest 8.1.
AddType application/x-httpd-php53 .php
+
 
AddType application/x-httpd-php54 .php
+
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-php55 .php
 
 
  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}}php53
 
{{szablon:Prompt}}php54
 
{{szablon:Prompt}}php55
 
 
  {{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}}php53-cgi
 
{{szablon:Prompt}}php54-cgi
 
{{szablon:Prompt}}php55-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 70: 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 (najczęsciej błędne wpisy w .htaccess).
+
| 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 80: Linia 119:
 
|}
 
|}
  
=== Phalcon ===
+
=== Skrypty PHP bez limitów czasowych ===
  
Na serwerach MyDevil dostępny jest wydajny framework [http://phalconphp.com/pl/ Phalcon] dla wersji PHP >= 5.3. Aby załadować moduł należy w skrypcie php dopisać <syntaxhighlight lang="PHP">dl('phalcon.so');</syntaxhighlight>
+
Skrypty PHP bez limitów czasowych można uruchamiać po [[Logowanie|zalogowaniu]] się przez ssh. Aby uruchomić skrypt należy  skorzystać z php cli, na przykład:
bądź załadować przez <code class="directory">.user.ini</code>
+
php ~/domains/sklep.domena.pl/public_html/import_produktow.php
auto_prepend_file = '/ścieżka/do/dl.php'
+
 
a plik  <code class="directory">dl.php</code> powinien mieć zawiartość:
+
Drugim sposobem jest uruchomienie wbudowanego serwera webowego w PHP. Aby to zrobić należy:
<syntaxhighlight lang="PHP">
+
# [[Rezerwacja portów| zarezerwować]] port TCP.
<?php dl('phalcon.so'); ?>
+
# Zalogować się przez ssh.
</syntaxhighlight>
+
# 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>php74 -S 0.0.0.0:''ZAREZERWOWANY_PORT''</code>
 +
#* 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 "php74 -S 0.0.0.0:''ZAREZERWOWANY_PORT''"</code>.
 +
# 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, 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.

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:

  1. zarezerwować port TCP.
  2. Zalogować się przez ssh.
  3. Przejść do folderu ze skryptami php (na przykład public_html wybranej domeny) cd domains/domena/public_html.
  4. 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".
  5. 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ą.