Úprava php ini. Jak změnit nastavení v konfiguraci PHP? Možná vám bude vyhovovat řešení pomocí .htaccess

Některé úkoly vyžadují použití plánovačspeciální program, který spouští určité skripty, programy atd. v určitém okamžiku. Ve většině případů toto Cron. Možná jsou i další, ale já o nich nic nevím. V tomto článku vám řeknu o některých funkcích Nastavení cronu na příkladu spuštění PHP skriptu.

Cron úlohy a spuštění PHP skriptu

Samotný záznam (úkol) v Cronu (obvykle podle názvu složky crontab nebo crontabs) sestává z časové razítko A týmy. Časové razítkoúkoly obsahuje následující hodnoty: den v týdnu, měsíc, den, hodina a minuta a tým (často nazývané: cvičení) , alespoň v případě spuštění skriptu, se může skládat z interpretu a samotného skriptu, například:

`/usr/bin/ which php` /home/l/login/public_html/script.php

V v tomto případě: `/usr/bin/který php` - absolutní cesta k interpretu PHP a /home/l/login/public_html/script.php je absolutní cesta ke skriptu PHP. Je pozoruhodné, že cesta k interpretu a skriptům se pro vás může lišit, protože závisí na nastavení webového serveru.

Nastavení Cronu přes PU

Většina poskytovatelů hostingu poskytuje klientům speciální ovládací panel(PU) hosting, který usnadňuje konfiguraci a práci s položkami Cron. Takto vypadá spuštění php skriptu cron_admitad.php v plánovači na SpaceWebu.

Upozorňujeme, že zde není uvedena cesta k interpretu (více o tom trochu později). Pozoruhodné je také použití symbolu „ vlnovka" (~) jako alias" domovský adresář» (s ohledem na uvedený příklad: /home/l/login). Zjednodušeně řečeno je to adresář, do kterého se za normálních podmínek zpočátku dostanete přes FTP.

Cesta k interpretu ve skriptu php

Většina problémů má více řešení. Často je těžké říci, který z nich je optimální, ale o to nejde.

symbol " mříž" (#) je komentář v PHP, ale sekvence #! (Angličtina) linie třesku, hash-bang nebo ona-bang) má speciální význam – určuje cestu k interpretu skriptu.

Faktem je, že v operačních systémech podobných UNIXu lze skripty vytvářet různé jazyky: PHP, Perl, Python atd. Když je skript spuštěn webovým serverem, zaměřuje se na příponu souboru (například: .php, .phtm, phtml atd. jsou běžná rozšíření pro interpret PHP). Operační systémy podobné UNIXu se zpravidla nezaměřují na příponu souboru - soubor ji často prostě nemá. Systém přečte první řádek a hledá obsluhu skriptu.

Ve výše uvedeném skriptu PHP je první řádek, který mám:

#!/usr/local/bin/php

Opět platí, že cesta k vašemu PHP interpretu se může lišit od zadaná cesta v příkladu, protože vše závisí na nastavení webového serveru.

Cesty k souborům ve skriptu běží přes Cron

Další důležitá nuance. Pokud váš skript používá funkce require() , include() , fopen() atd., které zahrnují přístup k souborům třetích stran na webovém serveru, musíte zadat absolutní cestu, například:

/home/s/shop4mru/public_html/content/data/coupons.db

Opět platí, že cesta k souboru coupons.db se může lišit od cesty uvedené v příkladu, protože vše závisí na nastavení webového serveru.

Obecně lze také použít relativní cestu. K tomu použijte php funkci chdir(), která změní aktuální adresář PHP, na zadaný jako jeho parametr.

Abych byl upřímný, tuto funkci jsem nepoužil, ale pokud tomu rozumím, situace je následující. Před kontaktováním soubor třetí strany na webovém serveru vložte něco jako následující kód:

Chdir("public_html"); // přechod do adresáře: /home/s/shop4mru/public_html

Soubor tedy bude s ohledem na daný příklad dostupný přes relativní cesta:

./content/data/coupons.db

Tečka na začátku znamená aktuální upravený adresář.

Pojďme si shrnout nastavení Cronu

Cron (často se nazývá podle názvu složky crontab nebo crontabs) - plánovací program spuštěný na webovém serveru poskytovatele hostingu, který spouští skripty, programy a další příkazy v určitém okamžiku. Samotný úkol je záznam skládající se z časového razítka a příkazu. Důležitý bod zde je náznak ty správné cesty na interpret skriptů a soubory v něm obsažené.

v 8:00 Upravit zprávu 9 komentářů

Cron je plánovač úloh, který běží na Unix\Linux hostingu. Umožňuje automaticky provádět určité akce na serveru (spouštění programů, skriptů atd.), s daný čas nebo frekvence.

Správné nastavení plánovače úloh Cron

Úlohy pro Cron lze popsat následovně - jedná se o několik řádků (jeden řádek - jedna úloha), které udávají frekvenci spouštění a příkaz (což znamená, co je vlastně potřeba spustit):

30 3 * * 2 /vasadresar/myscript.pl

Schematicky:

Minuty Hodiny DenMěsíc Měsíc Příkaz DenTýden

zápis- nastavte číslem od 0 do 59

Hodinky- nastavit číslem od 0 do 23

den v měsíci- nastavte číslem od 1 do 31

Měsíc- nastavte číslem od 1 do 12

den v týdnu- 1 - pondělí, 2 - úterý, 3 - středa, 4 - čtvrtek, 5 - pátek, 6 - sobota, 7 - neděle

V našem příkladu (30 3 * * 2 /yourdirectory/myscript.pl) tedy back znamená, že musíte spustit soubor /yourdirectory/myscript.pl každé úterý ve 3:30

Také v každém z polí můžeme použít:

Psaní oddělené čárkami: 2,5,16 - pokud to napíšete do pole Hodiny, úloha poběží ve 2:00, 5:00 a 16:00.

Interval: 5-9 - pokud to napíšete do pole Minuty, bude úloha běžet každou minutu v období od 5 do 9 minut.

Dodatečná frekvence: /4 - pokud to napíšete do pole hodin, bude to znamenat, že ke spuštění dojde každé 4 hodiny.

Důležité! Hvězdička (*) znamená vše možné hodnoty! Nezkušený webmaster, který se rozhodne, že ke spuštění úlohy vždy 1. dne v měsíci stačí napsat * * 1 * * /yourdirectory/myscript.pl, narazí na skutečnost, že úloha bude spouštěna každou minutu, každou hodinu.

Jak a kde zadat úlohy Cron?

První způsob, jak pracovat s Cronem, je přes váš hostingový ovládací panel. Ale v různé panely konfigurace a správa se provádějí různými způsoby:

cPanel: Ovládací panely -> Cron Jobs

Správce ISP: Ovládací panely -> Plánovač (Cron)

Parallels Plesk: Ovládací panely -> Naplánované úlohy

Pokud váš poskytovatel hostingu nemá možnost pracovat s úlohami prostřednictvím ovládacího panelu, pak se veškerá práce s Cronem obvykle provádí prostřednictvím protokolu SSH. Vše je zde jednoduché - připojte se k serveru přes SSH a zadávejte příkazy. Pro připojení k serveru použijte volný program PuTTY ( jak nastavit) a příkazy se zadávají na příkazovém řádku.

Chcete-li začít, zadejte příkaz

Poté budete s největší pravděpodobností převedeni na textový editor vi (y různých poskytovatelů tam může být různé editory). vi je poměrně složitý editor, takže doporučujeme zkusit zadat řádek

Pokud se spustí lehčí editor, pak je vše v pořádku, ale pokud jej váš poskytovatel hostingu nepodporuje, pak Google pomůže vám to zjistit s vi. Jen stručně nastíníme hlavní body:

Zadávání textu- stiskněte klávesu i a editor se přepne do režimu zadávání textu;

opustit režim zadávání textu- Esc

Smazat znak- x (jste-li v režimu testovacího zadávání, pak pro smazání znaku nejprve stiskněte Esc a poté x);

Důležité! Při zadávání úloh pro Cron musíte stisknout Enter po každém řádku, i když je to jediný řádek.

Chcete-li zobrazit existující úlohy Cron, zadejte crontab -l

Cron úlohy s užitečnými příklady

Podívejte se na pravidla pro vytváření úloh Cron. Spustit úlohu každé 2 hodiny v 0 minutách (každý den, každý měsíc)

0 */2 * * * /vasadresar/myscript.pl

Spusťte úlohu pokaždé po restartu serveru

@reboot/yourdirectory/myscript.pl

Spustit úlohu ve středu ve 3:20 (každý den, každý měsíc)

20 3 * * 3 /vasadresar/myscript.pl
1 0 14 3 * /vasadresar/myscript.pl

Spustit úlohu měsíčně 1. v 3:15 (každý měsíc)

15 3 1 * * /vasadresar/myscript.pl

Spouštějte soubory PHP podle plánu pomocí Cronu

Pro spouštění PHP skriptů přes Cron můžete použít speciální interpret. Bohužel vám nemůžeme dát návod, jak jej používat, protože... Různí poskytovatelé mohou používat různý software. Proto mnoho webmasterů spouští soubory PHP pomocí WGET, k tomu používáme následující položku crontab:

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

"-O -" znamená, že Cron nebude tvořit extra soubory, ale bude fungovat přes konzolu. To vám umožní vyhnout se zahlcení serveru.

"-q" zakáže tisk operace na obrazovku

"-t 1" umožňuje pouze jeden pokus o připojení.

http://mysite.com/file.php - cesta k vašemu PHP souboru (není nutné zadávat absolutní cestu).

Důležité! Pokud předáváte parametry pomocí tohoto PHP souboru, jsou chvíle, kdy je WGET nezpracuje zcela správně. V tomto případě doporučujeme uvést adresu PHP souboru do jednoduchých uvozovek:

30 3 * * 2 root wget -O - -q -t 1 "http://mysite.com/file.php"

Existuje také jiný způsob, jak začít:

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

V tomto případě ale potřebujete znát cestu ke složce wget na vašem serveru (nejčastěji /usr/bin/wget nebo /usr/local/bin/wget).

Získejte pracovní zprávu Cron e-mailem

Cron lze nakonfigurovat e-mail přišly zprávy s výsledky běžících úloh. Tato funkce může být také užitečná pro upozornění v případě chyby. Chcete-li obdržet zprávu e-mailem, musíte upravit crontab (před úkoly) a napsat následující řádek:

Kde [e-mail chráněný]- toto je e-mail, na který budou zasílány dopisy. Můžete také přidat více adres oddělených čárkami.

Je tu ještě jedna věc: výsledek skriptu dostanete také e-mailem. pokud například skript napíše na obrazovku nějaký nápis, pak stejný nápis bude odeslán na váš e-mail spolu s reportem. Pokud vás to obtěžuje, přidejte na konec úkolu řádek > /dev/null 2>&1

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php > /dev/null 2>&1
8. dubna 2015 v 11:57 hodin

Spuštění PHP skriptu pomocí rozvrh cronu. Když není všechno tak jasné

  • PHP
  • Vývoj webových stránek

V tomto článku budu mluvit o některých jemnostech spustit php- skripty na hostingových stránkách, jejichž neznalost může zkazit spoustu nervů jak začínajícím programátorům, tak středně pokročilým profesionálům.
Důvod napsání tohoto článku: problémy se spouštěním skriptů na hostingech různá nastavení. A protože se nastavení mohou lišit, informace uvedené pro obecné případy může být nevhodné a zavádějící.

Trochu teorie na těchto odkazech: a pro ty, kteří si chtějí osvěžit paměť.

Případ jedna

V nastavení operační systém nebyly zadány žádné výchozí cesty. V důsledku toho další příkaz v cronu se neprovede.

Php /var/www/LOGIN/data/www/SITE/cron.php
Správným příkazem by byla druhá možnost, kde napíšeme úplnou cestu k php interpretu.

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php
Existuje několik dalších způsobů, jak začít php skript a ty popsané. Zde bude zajímavé, že php skript se spouští jako soubor s příkazy pro konzoli a zde můžete napsat spoustu příkazů a popsat nejrůznější možnosti pro každý vkus. Kód vypadá takto.

#!/usr/bin/php
Příkaz pro spuštění v cronu určuje cestu ke skriptu a nic víc. Skript obsahuje symboly # a pak jednoduše napíšeme příkazy, které potřebujeme v bash.

Případ dva

Spuštění skriptu na vyžádání z prohlížeče způsobí zobrazení stránky v prohlížeči. A při provádění skriptu přes cron má za následek výstup textu stránky na příkazový řádek. Zde může být několik možností. Systém lze nakonfigurovat tak, aby ukládal výstup do konzoly jako soubor. Navíc tento soubor nemusí být umístěn na nejtypičtějším místě. Postupně se tak může zaplnit veškerý prostor na disku. Často je webu přidělen prostor 1 gigabajt, 500 megabajtů. A dokonce existovaly hostingy s 50 a 10 megabajty pro web.

Případně lze výstup přesměrovat na poštovní schránka, kterou vám starostlivý hostitel nenápadně představil a zaregistroval v nastavení hostingu jako výchozí email. Při každém spuštění skriptu bude veškerý textový výstup do konzole formátován jako písmeno. Problémy mohou začít nečekaně. Pokud je úloha cron prováděna často a hostitelský e-mail má limit na počet e-mailů za den, e-mail jednoduše selže (bude zablokován poskytovatelem jako potenciální spammer). A jako nepříjemné důsledky obdržíte odmítnutí registrace uživatelů, upozornění uživatelů atd., které je vázáno na poštu.

Řešení je staré jako čas. Je nutné přesměrovat výstup z konzole do prázdna. To se provádí přidáním příkazu na konec příkazu cron.

>>dev/null 2>&1
Někdy si správci hostingu vezmou za úkol je nenápadně uživateli nainstalovat. I zde může být úskalí.

Případ tři

Situace je jednoduchá. Potřebujeme odladit skript spuštěný plánovačem. Můžete to zkusit udělat pomocí php, vynutit skript, aby zapisoval protokoly atd. Existuje ale mnohem jednodušší způsob, musíte výstup přesměrovat do souboru. Příkaz je jednoduchý, doplňkový parametr do našeho týmu:

>
Musí být přidán na konec příkazu:

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php > /var/www/LOGIN/data/www/SITE/log.html
Znak ">" říká systému, aby přesměroval výstup. Dále je název souboru. V našem případě je zadána absolutní cesta. Tento příklad není těžké najít na internetu. Zde nás ale může čekat problém, vyplývající z druhého případu. Promyšlený hostitel automaticky přidá přesměrování výstupu na konec našeho řádku. A někdy to maskuje. Výsledkem je příkaz jako:

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php > /var/www/LOGIN/data/www/SITE/log.html >/dev/null 2>&1
Výsledkem je, že výstup je znovu přesměrován do void a výstupní soubor bude prázdný. Zde můžete hostitele upozornit na jeho chybu, že byl příliš přechytralý s nastavením. Nebo můžete rovnou použít berličku. Po příkazu přesměrování na soubor ukončete příkaz znaky &&. Tyto dva znaky se používají v příkazovém řádku ke spojení více příkazů na jednom řádku. Dávají příkazovému řádku vědět, že příkaz je dokončen a přichází další příkaz. Je na něj aplikováno přesměrování do prázdna. V důsledku toho zůstalo přesměrování do prázdna a soubor protokolu byl zapsán správně. Příklad příkazu:

/usr/bin/php /var/www/LOGIN/data/www/SITE/cron.php > /var/www/LOGIN/data/www/SITE/log.html && >/dev/null 2>&1

Případ čtvrtý

Skript se spustil, ale nefunguje správně. Důvodem je php interpret při spuštění z příkazový řádek začne pracovat v nesprávně nakonfigurovaném prostředí, odlišném od toho, které by bylo při spuštění přes HTTP server. Prvním znakem je, že skript nenajde soubory, které jsou ve stejném adresáři jako on, ale začne se považovat za umístěný v kořenovém adresáři uživatele, který je o několik složek výše než kořen webu. První věc, kterou je třeba zkontrolovat, je proměnlivé prostředí a super globální pole $_SERVER.

První věc, kterou o tomto problému najdete na internetu, je rada napsat příkaz pro změnu adresáře v koruně:

Cd /var/www/LOGIN/data/www/SITE/
Ale v některých případech to nepomůže. Existuje cesta ven. Jedním z nich je vzít vše do svých rukou a nastavit chybějící prostředí pro fungování skriptu. Na internetu je o tom již více informací.

Někdy stačí zadat následující kód na začátku skriptu a cesty opět fungují.

$path_parts = pathinfo($_SERVER["SCRIPT_FILENAME"]); // určení adresáře skriptu chdir($path_parts["dirname"]); // nastavení adresáře pro provádění skriptu
Jak vidíte, vše je napsáno ve funkcích a není třeba se trápit s nastavením.

Závěr

To je vše. Problémy a řešení nejsou triviální a obecně je taková kombinace neúspěšných nastavení vzácná. Hodně štěstí při nasazování svých projektů a pohybu.




Nahoru