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:

  1. 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.
  2.  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.
  3. 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á.
  4. 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