O czym powinien pamiętać początkujący programista - konfiguracja PHP
Treść dodana: 14 listopada 2017. Ostatnia modyfikacja: 14 listopada 2017.
Zazwyczaj początki przygody z językiem PHP nie są zbyt trudne. Zaczynamy od podstawowych wyrażeń, przez `echo`, instrukcje warunkowe, bazy danych. Z czasem kod się rozrasta i jesteśmy gotowi do publikacji naszego dzieła na serwerze produkcyjnym. Po wgraniu danych na serwer nagle okazuje się że coś nie działa, kodowanie znaków jest nieprawidłowe a zamiast właściwej strony serwer wyświetla masę błędów. Czym to może być spowodowane? Odmienną konfiguracją naszej maszyny deweloperskiej oraz serwera. Trzeba mieć świadomość, iż spora część firm hostingowych zupełnie nie zawraca sobie głowy konfiguracją – administrator nie jest programistą i może nawet nie mieć świadomości poprawnych ustawień. Sporo firm działa po prostu na domyślnych ustawieniach które były dostępne w panelu (jak Direct Admin czy Plesk) a ustawienia te, jak kodowanie znaków, nie są przeznaczone na nasz rodzimy rynek. Dlatego bardzo ważne jest aby zawsze, bezwzględnie konfigurować wszystkie ustawienia we własnym zakresie. Przykładowa konfiguracja może mieć postać:
<?php // APPLICATION_ENV to zdefiniowana wcześniej stała np.: development / production $env = APPLICATION_ENV ?: 'development'; // różne ustawienia wyświetlania błędów dla obu środowisk if ('production' === $env) { error_reporting(0); ini_set('display_errors', 'off'); ini_set('display_startup_errors', false); } else { error_reporting(-1); ini_set('display_errors', 'on'); ini_set('display_startup_errors', true); } // ustawienia ogólne oraz sesji ini_set('arg_separator.output', '&'); ini_set('session.use_cookies', true); ini_set('session.use_only_cookies', true); ini_set('session.use_trans_sid', false); ini_set('session.name', 'sessid'); ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,fieldset=fakeentry'); // ustawienia związane ze strefą czasową i locale ini_set('date.timezone', 'Europe/Warsaw'); setlocale(LC_ALL, 'pl_PL.UTF8'); // ustawienia kodowania znaków dla różnych rozszerzeń ini_set('mbstring.language', 'uni'); ini_set('default_charset', 'UTF-8'); ini_set('input_encoding', 'UTF-8'); ini_set('output_encoding', 'UTF-8');
Przedstawiona konfiguracja zakłada, że korzystasz Czytelniku z kodowania UTF-8. Odmienną kwestią są nagłówki wysyłane przez serwer oraz kodowanie znaków w bazie danych. Te omawiałem już we wcześniejszym artykule.
Innym częstym problemem jest błędnie skonfigurowana sesja. Należy pamiętać że dane sesji zapisywane są zazwyczaj w katalogu `/tmp` przez proces PHP. Katalog ten może być czyszczony znacznie częściej niż wynosi czas życia sesji dlatego zostanie ona utracona wcześniej niż zakładał programista. W skrajnych przypadkach, zdawanie się na domyślne ustawienie może nawet stworzyć lukę dla włamywacza lub kolizję nazw.
// patrz także ustawienia sesji we wcześniejszym kodzie // katalog do którego tylko nasz użytkownik ma dostęp (najczęściej w obrębie konta) session_save_path('katalog'); // Garbage collector ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 100); ini_set('session.gc_maxlifetime', 1440);
Taka konfiguracja powinna zapewnić nam bezpieczne i stabilne działanie skryptu niezależnie od środowiska.
Dodaj komentarz
- sieć
- http
- apache
- ssl
- php
- composer
- javascript
- jquery
- ajax
- html
- css
- pdo
- sql
- mysql
- postresql
- mongodb
- spl
- sql server
- psr
- programowanie
- regex
Wyszukaj interesujące Cię słowa kluczowe pośród istniejących porad.
Komentarze
Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?