Nefunguje PHP skript spuštěný přes příkazový řádek

Máte skript, který běžně spouštíte přes prohlížeč a vše nádherně funguje. Jednoho dne si třeba řeknete, že by bylo pěkné spouštět tenhle skript automaticky třeba pomocí CRONu. Cron nastavíte, skript se spustí, ale nefunguje (například se nepřipojí k databázi). Čím to je?

Za prvé – musíte includovat nějaký soubor (v našem příkladu třeba s nastavením přihlašovacích údajů k databázi).

Za druhé – musíte tento soubor includovat pomocí relativní cesty (tzn. např. include './nastaveni.php';).

V čem tedy vězí problém? Skript spouštěný přes konzoli (přes CLI verzi PHP) nevezme jako aktuální adresář ten, ve kterém je umístěn skript, nýbrž ten, který mu předá shell. PHP tedy nemůže najít includovaný soubor (protože se dívá do špatného adresáře) a include selže.

Jak z toho ven? Je to jednoduché. Používejte absolutní adresování, nejlépe založené na skutečném umístění souboru. Konkrétně tedy například

include './nastaveni.php';

nahraďte za

include dirname(__FILE__).'/nastaveni.php';

A vše poběží tak, jak má.

Tanto příspěvek byl zařazen do kategorie PHP a označen štítkem . Do oblíbených si můžete uložit trvalý odkaz.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *