2024-11-01 01:29:59
  • Hello!
  • Whats ya doin?
  • ByeBye

[&]

3.142.134.23

Środowisko uruchomieniowe PHP

workshop: #ai-L1-ws1.html

Nieodnaleziono wskazanego pliku schedule-3tf.php

Warsztat: Środowisko uruchomieniowe dla PHP

Przygotowanie

  1. Upewnij się, ze masz dostępny serwer HTTP z zainstalowanym interpreterem PHP. Jeżeli nie, skonsultuj się z prowadzacym
  2. Przygotuj katalog www w katalogu domowym. Upewnij się, że masz do katalogu uprawnienia dostępowe (odczytu i zapisu)
  3. Twórz po kolei pliki skryptów PHP dla każdego warsztatu wg. wzorca: 1-1.php, 1-2.php itp.
  4. Wywołuj skrypty w Przeglądarce internetowej, a jeżeli trzeba - wynotuj zadane informacje
  5. Przeprowadź Ćwiczenie 1-5 z Listingu 1.6 dotyczące Parametrów aplikacji używając systemów: Linux oraz Windows
1.1 Środowisko uruchomieniowe

Interpreter skryptów PHP może pracować na 2 sposoby:

  • jako interpreter terminalowy (jak każdy inny)
  • jako interpreter wywoływany przez serwer HTTP (np. Apache, nginx, IIS)

Aby wyświetlić informacje nt. konfiguracji interpretera przygotuj skrypt:

<?php
/* Warsztat 1-1: Environment
 * To jest pierwszy skrypt PHP pokazujący jak wyświetlać informacje o środowisku
 * */
echo phpinfo();
?>

oraz wywołaj go w przeglądarce wywołując go poprzez serwer HTTP: http://localhost/info.php

Wynotuj informacje nt. środowiska:

  • Wersja interpretera
  • System
  • Server API
  • User/Group
  • Document root
  • dostępność rozszerzeń:
    • mysqli
    • openssl
    • PDO
    • sqlite3
    • xdebug
1.2 Obsługa błędów

Źródło: https://www.php.net/manual/en/function.error-reporting.php
Zgłaszanie błędów:

error_reporting( error-level );
0;	// wyłącz
-1;	// zgłaszaj wszystkie błędy

Typy błędów (error-level):

  • E_ALL , E_ERROR , E_WARNING , E_PARSE , E_NOTICE , E_STRICT , E_DEPRECATED
  • Łączenie opcji – pomiędzy typami znak AND: &

  • Wykluczanie opcji – przez typem błędów znak TYLDA: ~

Błędy będą zgłaszane do pliku ustawionego jako plik Dziennika błędów np.:

Linux/Unix: /var/log/apache2/error.log

Windows: C:/Ścieżka/Apache2/?/error.log

Źródło: https://www.php.net/manual/en/function.ini-set.php

Wyświetlanie błędów (w obrębie skryptu): ini_set( opcja-konfiguracyjna, wartość )

Przykład: ini_set( 'display_errors', 1 );

Przykładowe opcje
OpcjaZnaczenie
display_errorswyświetlanie błędów skryptu w jego wygenerowanym wyniku (wymaga error_reporting)
error_reportingzgłaszanie błedów (m.in. do dziennika błędów)
file_uploadsczy przesyłanie plików na serwer jest możliwe
memory_limitlimit pamięci RAM przeznaczony do wykonania jednego skryptu
post_max_sizemaksymalny rozmiar przesyłanego pliku
upload_max_filesizemaksymalny rozmiar przesyłanego pliku
max_file_uploadsilość jednocześnie wysyłanych do serwera plików
upload_tmp_dirkatalog tymczasowy przesyłanych plików
user_agentciąg identyfikujacy przeglądarkę

Pobranie opcji konfiguracyjnej: ini_get()

Lista opcji dla ini_set(): oficjalny podręcznik

Opcje konfiguracyjne można zmienić globalnie dla całego serwera w pliku php.ini

!!! UWAGA !!! Nie zawsze użytkownik ma dostęp do pliku php.ini

!!! UWAGA !!! Nie wszystkie dostępne opcje można wyłączyć z poziomu użytkownika ini_set()

1.3 Skrypt do debugowania
<?php
/* Warsztat 1-2: Debug
 * Ten skrypt demonstruje sposoby wyświetlania notyfikacji, ostrzeżeń i błedów
 * */
error_reporting(E_ALL);
ini_set('display_errors',1);
// E_NOTICE
echo $notDeclared;
// E_WARNING
echo A_CONSTRAINT;
// E_PARSE
if(1=='1'){
	if(1==='1')
		echo "(int)1 = (string)'1'";
}
// PHP Parse error:  syntax error, unexpected end of file in /home/gp/Dokumenty/ZSE/AI/K3/1/1-1.php on line 17, referer: http://lo.local/zse/AI/K3/1/
// E_ERROR
echo eregi_replace('kodować','grać','Lubię grać');
echo 'Czy mnie wyświetli?';
echo 'tak/nie?';
// PHP Parse error:  syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in /home/gp/Dokumenty/ZSE/AI/K3/1/1-1.php on line 17, referer: http://lo.local/zse/AI/K3/1/
?>
		
1.4 Moduł wspierający debugowanie

Instalacja: # apt-get install php-xdebug

Zastosowanie:

  • bardziej szczegółowe debugowanie
  • przejrzyste debugowanie
  • inne moduły/biblioteki mogą wymagać dostępności xdebug
1.5 Konfiguracja dla aplikacji

Najprostsze i najczęściej stosowane rozwiązanie, to zastosowanie pliku config.php zawierający odpowiednie informacje.

Zalety:

  • prosty
  • szybki
  • efektywny
  • w katalogu projektu

Wady:

  • mniej bezpieczny
  • wymaga żonglowania plikami konfiguracyjnymi w różnych środowiskach
<?php
/* Ćwiczenie 1-4: App configuration
 * Przykład użycia ustawień aplikacji
 * */
$conf = array(
	'app_name' => 'Projekt-X',
	'root' => 'admin',
	'password' => '12345Ty#',
	'db_host' => 'localhost',
	'db_name' => 'projekt-x',
	'db_user' => 'user-12345',
	'db_pass' => 'pass-12345'
);
echo '<h1>Parametry aplikacji w SKRYPCIE</h1>';
echo '<p>App Name: '.$conf['app_name'].'</p>';
echo '<p>User: '.$conf['root'].'</p>';
echo '<p>Passwd: '.$conf['password'].'</p>';
1.6 Parametry aplikacji

Linux:
Należy wyedytować plik 1 lub 2 lub 3

# Dodaj przykładowy wpis:
export DB_NAME="Projekt-X"

Wydaj polecenie, by załadować zmiany dla sesji: source <NAZWA_PLIKU>

Windows:
Należy dodać do zmiennej systemowej

Przykładowy klucz: DB_NAME

Przykładowa wartość: Projekt-X

Przeloguj się (jeżeli potrzeba)

Pliki dla systemu Linux, w których można dokonać edycji zmiennych środowiskowych:

  1. ~/.bashrc
  2. /etc/environment
  3. /etc/apache2/envvars

Użyj parametru środowiskowego dla aplikacji w skrypcie PHP: getenv('DB_NAME');

Właściwości:

  • trudniejszy
  • czasochłonny
  • bezpieczniejszy
  • nie wymaga zmian/podmieniania plików konfiguracyjnych dla różnych środowisk
<?php
/* Ćwiczenie 1-5: App parameters
 * Przykład użycia parametrów aplikacji
 * */
echo '<h1>Parametry aplikacji w SYSTEMIE</h1>';
echo '<p>App Name: '.getenv('APP_NAME').'</p>';
echo '<p>User: '.getenv('APP_ROOT').'</p>';
echo '<p>Passwd: '.getenv('APP_PASSWD').'</p>';
echo '<hr/>';
echo '<p>App Name: '.$_ENV['APP_NAME'].'</p>';
echo '<p>User: '.$_ENV['APP_ROOT'].'</p>';
echo '<p>Passwd: '.$_ENV['APP_PASSWD'].'</p>';
?>

Podsumowanie