PHP beállítások módosításához .htaccess vagy php.ini ajánlott?
Az alapértelmezett PHP beállítások a legtöbb weboldalnak megfelelnek. Esetenként szükség lehet a PHP beállítások finomhangolására. Sok PHP beállítás módosítható vagy php.ini vagy .htaccess fájl segítségével.
A leggyakoribbak például : PHP memória korlát módosítás, bizonyos típusú php hibaüzenetek kiíratása vagy elrejtése, alapértelmezett időzóna megadása.
A PHP beállítások módosítására php.ini és a .htaccess fájlok közül Apache webkiszolgálóknál technikai okok miatt vagy az egyik vagy a másik használható, a kettő egyszerre nem.
Amennyiben nem ismerjük az aktuális beállításokat és jelenleg is használunk .htaccess fájlt, akkor a módosítása előtt készítsünk róla egy biztonsági másolatot .htaccess.bak vagy más néven!
Kérjük olvassa végig a teljes szöveget a .htaccess fájl módosítása és elmentése előtt!
PHP.INI vagy .HTACCESS
Beállítjuk a kívánt módosítást és ellenőrizzük annak működését:
- eset: .htaccessbe írtuk, de php.ini -re lett volna szükség
Amikor a biztonsági másolattal elkészültünk, a .htaccess -ben megadhatjuk a
php_value default_charset “UTF-8”
vagy a
php_value date.timezone “Europe/Budapest”
vagy más hasonló beállítást.
A beállítható változók listáját a http://php.net/manual/en/ini.list.php linken lehet megtekinteni.Amennyiben a beállításokat htaccessben adtuk meg, de php.ini. -ben lett volna rá szükség (vagy elírtuk a beállítást) akkor az Apache webkiszolgáló Internal Server Error üzenetet fog adni az adott weboldalra és a weboldal működése _megáll_.
Célszerű ezért, ha mindenképpen éles szerveren kell tesztelnünk a beállítást, akkor egy használaton kívüli almappába helyezni a .htaccess fájlt, és abban kísérletezni a PHP beállításokkal. Az almappában megadott .htaccess beállítások csak arra a mappára és az abban lévő almappákra lesznek érvényesek.- 1. eset javítása Internal Server Error esetén a php_flag és php_value beállításokat php.ini fájlba írhatjuk a .htaccess helyett, úgy hogy elhagyjuk előlük a php_flag és php_value szövegeket valamint a beállítás és értéke közé = jel kerül. A példánál maradva a php.ini tartalma:
default_charset = “UTF-8”
date.timezone = “Europe/Budapest”
lesz.
Ennek az oka az, hogy php.ini esetén nem szükséges tudatnunk a szerverrel, hogy a phpnak szólnak a beállítások. Ez a php.ini fájl miatt egyértelmű.
Figyelem! Php.ini -ben kizárólag PHP beállítások adhatóak meg. Rewrite és más .htaccess beállítások nem!
Miután a beállítások átkerültek a php.ini -be, a .htaccess fájlban a php_value és php_flag beállítások elé # karakter megadása szükséges. Ezzel tudatjuk az Apache-al, hogy azt a sort nem szükséges feldogoznia, az csak megjegyzés. Ezután újra működőképessé válik a weboldal.
Új PHP.INI készítésekor célszerű az alábbiakat is megadnunk a módosítani kívánt beállításokon kívül:
extension=pdo.so
extension=pdo_mysql.so
extension=suhosin.so
ezek hiányában sikertelen lehet az sql szerverhez kapcsolódás, illetve a suhosin patch beállításainak finomhangolása.
- 1. eset javítása Internal Server Error esetén a php_flag és php_value beállításokat php.ini fájlba írhatjuk a .htaccess helyett, úgy hogy elhagyjuk előlük a php_flag és php_value szövegeket valamint a beállítás és értéke közé = jel kerül. A példánál maradva a php.ini tartalma:
- eset: .htaccessbe írtuk és ott is várja a beállításokat at apache
Amennyiben jól és jó helyen adtuk meg a beállításokat, akkor oldalunk működik tovább az új PHP beállításokkal. - eset: php.ini fájlban adtuk meg a beállításokat, de .htaccess -t használ az apache
A php.ini fájlban lévő beállítások várhatóan nem fognak gondot okozni akkor, ha a fordított helyzet áll elő, vagyis az Apache webkiszolgáló a .htaccess -ben várja a PHP beállítások módosítását, mi pedig php.ini -be írtuk őket. Ekkor ugyanis a php.ini fájlt egyáltalán nem dolgozza fel az apache és hibát biztosan nem fog jelezni rá. - eset: php.ini-ben adtuk meg a beállításokat és azt használja a rendszer.
Hasonlóan a második esethez, weboldalunk a módosított PHP beállításokkal működik tovább.
Van arra mód, hogy a .htaccessben is szerepeljenek a PHP -t módosító beállítások Internal Server Error nélkül akkor is, ha az Apache webkiszolgáló egyébként a php.ini fájlban várja ezeket. Ahhoz, hogy az ekkor egyébként jelentkező Internal Server Error hibát elkerüljük, mindössze a <IfModule mod_php5.c> </IfModule> között szükséges szerepeltetnünk a kívánt beállításokat. A korábbi példáknál maradva, így a .htaccess tartalma:
<IfModule mod_php5.c>
php_value default_charset “UTF-8”
php_value date.timezone “Europe/Budapest”
</IfModule>
Ennél a beállításnál csak akkor értelmezi a PHP-re vonatkozó beállításokat az Apache webkiszolgáló, ha megtalálja a szükséges modult így azt fel is tudja dolgozni. Egyéb esetben figyelmen kívül hagyja.
Ez a beállítás a PHP5.x esetében működőképes. Újabb PHP megjelenése esetén célszerű az új PHPra is beállítanunk a megfelelő modul kiválasztásával pl.: <IfModule mod_php7.c></IfModule> .
PHP.INI vagy .USER:INI
A legújabb cpaneles szervereken a kizárólag az aktuális mappában működő php.ini fájl helyett használhatunk .user.ini fájlt is.
Ez utóbbi az összes abból a mappából nyíló további mappára is érvényes lesz, így nem szükséges külön külön php.ini fájlokat elhelyezni a különböző mappákba.
A .user.ini minden más tulajdonságában megegyezik a php.ini fájllal. A linux/unix rendszereken a .-al kezdődő fájlnevek rejtett fájlok. Amennyiben meglévő.user.ini fájlunkat szeretnénk szerkeszteni a cpanelen, azt a rejtett fájlok megjelenítése opció engedélyezése után tehetjük meg.
Példa .user.ini:
extension=pdo.so
extension=pdo_mysql.so
extension=suhosin.so
default_charset = "UTF-8"
date.timezone = "Europe/Budapest"
memory_limit = 64M