PHP: Różnice pomiędzy wersjami

(Nie pokazano 21 wersji utworzonych przez 2 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]],
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
 +
 +
====  Ł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,
 +
sodium (PHP 7.1: libsodium, 7.2, 7.3: sodium), phalcon, grpc.
  
 
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):
 
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):
Linia 33: Linia 39:
 
Zaleca się skorzystanie z konfiguracji open_basedir dostępnej bezpośrednio w panelu w "Szczegóły" przy danej witrynie www typu PHP.
 
Zaleca się skorzystanie z konfiguracji open_basedir dostępnej bezpośrednio w panelu w "Szczegóły" przy danej witrynie www typu PHP.
  
Istnieje również możliwość wykorzystania .user.ini przy php cli, w tym celu należy wydać polecenie <code>export PHP_INI_SCAN_DIR=/usr/home/''login''</code>, gdzie login to nazwa naszego konta, plik .user.ini należy umieścić w takim wypadku w katalogu domowym.
+
==== 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.6. 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 7.1.
AddType application/x-httpd-php55 .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-php56 .php
 
  AddType application/x-httpd-php56 .php
 
  AddType application/x-httpd-php70 .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
  
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}}php55
 
 
  {{szablon:Prompt}}php56
 
  {{szablon:Prompt}}php56
 
  {{szablon:Prompt}}php70
 
  {{szablon:Prompt}}php70
 +
{{szablon:Prompt}}php71
 +
{{szablon:Prompt}}php72
 +
{{szablon:Prompt}}php73
 +
{{szablon:Prompt}}php74
 +
 +
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/php71 ~/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}}php55-cgi
 
 
  {{szablon:Prompt}}php56-cgi
 
  {{szablon:Prompt}}php56-cgi
 
  {{szablon:Prompt}}php70-cgi
 
  {{szablon:Prompt}}php70-cgi
 +
{{szablon:Prompt}}php71-cgi
 +
{{szablon:Prompt}}php72-cgi
 +
{{szablon:Prompt}}php73-cgi
 +
{{szablon:Prompt}}php74-cgi
  
 
==== Własne strony błędów ====
 
==== Własne strony błędów ====
Linia 77: Linia 105:
 
|-
 
|-
 
|}
 
|}
 
=== Phalcon ===
 
 
Na serwerach MyDevil dostępny jest wydajny framework [http://phalconphp.com/pl/ Phalcon]. Aby załadować moduł należy w skrypcie php dopisać <syntaxhighlight lang="PHP">dl('phalcon.so');</syntaxhighlight>
 
bądź załadować przez <code class="directory">.user.ini</code>
 
auto_prepend_file = '/ścieżka/do/dl.php'
 
a plik  <code class="directory">dl.php</code> powinien mieć zawartość:
 
<syntaxhighlight lang="PHP">
 
<?php dl('phalcon.so'); ?>
 
</syntaxhighlight>
 
  
 
=== Skrypty PHP bez limitów czasowych ===
 
=== Skrypty PHP bez limitów czasowych ===
Linia 97: Linia 115:
 
# 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>php55 -S 0.0.0.0:''ZAREZERWOWANY_PORT''</code>
+
# Uruchomić serwer na zarezerwowanym porcie <code>php56 -S 0.0.0.0:''ZAREZERWOWANY_PORT''</code>
#* W tym kroku można również wybrać inną wersję php, na przykład php56.
+
#* 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 "php55 -S 0.0.0.0:''ZAREZERWOWANY_PORT''"</code>.
+
#* Aby serwer działał po wylogowaniu się, należy go uruchomić w screenie <code>screen -dm bash -c "php56 -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, zarezerwowanym porcie 12345 dostęp do wcześniej wspomnianego skryptu to <nowiki>http://s4.mydevil.net:12345/import_produktow.php</nowiki>.
 
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]]

Wersja z 10:46, 13 mar 2020

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

Ł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, sodium (PHP 7.1: libsodium, 7.2, 7.3: sodium), phalcon, grpc.

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 /usr/home/login/domains/domena/.user.ini zawartość (ścieżka wskazuje drzewo katalogów):

open_basedir = "ścieżka:/tmp"

Zaleca się skorzystanie z 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 7.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

Ponadto na serwerze dostępne są binarki PHP CLI pod poleceniami:

php
php56
php70
php71
php72
php73
php74

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/php71 ~/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

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 php56 -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 "php56 -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ą.