Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cronjobs
Forum PHP.pl > Forum > Serwery WWW
deha21
Mam parę zadań Cron u siebie na stronie. Chciałem teraz dodać kolejne i mam problem. Robię to tak samo jak wcześniej, wskazując na odpowiedni plik i niestety plik się wykonuje. Działa on gdy włączę go normalnie z paska adresu, ale z Crona już nie. Jest jakieś rozwiązanie? Czy w kodzie pliku mogą być jakieś komendy, które pod Cronem nie chodzą?

Mam ustawione na godzinę 8:20, w reszcie pozycji gwiazdki. Link do pliku wygląda tak:
  1. /usr/local/bin/php /home/nazwa/domains/mojadomena.pl/public_html/pliki/folder/drugifolder/pliczek.php
matiit
Gdy wpiszesz w konsoli
  1. /usr/local/bin/php /home/nazwa/domains/mojadomena.pl/public_html/pliki/folder/drugifolder/pliczek.php
to działa?
deha21
Niestety nie mam dostępu do konsoli.
matiit
A masz pewność że /usr/local/bin/php jest lokalizacją binarki php?
deha21
Cytat(matiit @ 12.04.2013, 12:06:51 ) *
A masz pewność że /usr/local/bin/php jest lokalizacją binarki php?

Tak, bo mam dwa inne zadania Cron, które mają taki zapis i działają.
nospor
Skoro inne skrypty php działają ci pod cronem, to nie przyszlo ci do głowy, że może ten jest jakiś lewy? Może nie ma praw do zapisu gdzies tam, moze cos innego. Tego nie wiemy, bo nie wiemy co zawiera ten skrypt....
deha21
Cytat(nospor @ 12.04.2013, 13:53:25 ) *
Skoro inne skrypty php działają ci pod cronem, to nie przyszlo ci do głowy, że może ten jest jakiś lewy?

Przyszło mi do głowy. Ale jak napisałem wcześniej, przy wywołaniu pliku z paska przeglądarki działa bez zarzutu. Jest tam listowanie plików, rozpakowywanie archiwum ZIP, odczytanie XML-a i wrzucenie danych do bazy. Nie ma chyba sensu wrzucania całego skryptu bo jest on tak rozbudowany, że zakładam, że nikomu nie będzie się chciało go analizować.
matiit
To rzuć okiem w logi, może akurat coś będzie.
nospor
Cytat
Przyszło mi do głowy. Ale jak napisałem wcześniej, przy wywołaniu pliku z paska przeglądarki działa bez zarzutu.
Ale przeglądarka a konsola to dwie różne rzeczy.
Włącz logowanie błędów i tak jak mowil poprzednik - zajrzyj w logi
deha21
Niestety nie mam dostępu do konsoli ani logów PHP. Administrator serwera napisał, że Cron wysyła maila w przypadku błędu. Żadnego maila nie dostałem :/
nospor
Cron wysyla maila gdy cron ma blad a nie skrypt php. I dzieki temu wlasnie wiemy, że to problem jest ze skryptem, który odpalany z konsoli przez cron źle działa.
matiit
A logi na tańszych serwerach często mas zw katalogu domowym w podkatalogu .logs, logs lub coś takiego.
deha21
Mam jakieś logi ale to są logi serwerowe - widać kto jaki plik oglądał/pobierał. W logach nie znalazłem tego pliku w ogóle żeby był odczytywany.
matiit
Dodaj na początku tego skryptu jakiś kod, dzieki któremu poznasz że plik w ogóle się odpalił.
Np.
Kod
$f = fopen('/sciezka/do/pliku/ktorego/jeszcze/nie/ma/ale/masz/prawo/do/zapisu/w/katalogu', 'w+');
fwrite("dummy data");
fclose($f);


I po tym jak cron powinien uruchomić skrypt - sprawdź czy plik się stworzył (tylko daj ten kod na początku).
Jeśli tak - masz błąd w skrypcie.
deha21
Ok. Jednak okazało się, że był błąd i Cron wysłał do mnie maila z błędem... Niestety na jakiegoś ukrytego maila, którego nigdy nie sprawdzałem (5k+ wiadomości hehe).
Błąd jaki mi wyskakiwał to:
  1. Notice: Undefined offset: 1 in /home/nazwa/domains/mojanazwa.pl/public_html/pliki/folder/drugifolder/pliczek.php on line 19

Okazało się, że Cron nie brał pod uwagi lokacji pliczek.php - musiałem w skrypcie ustawić na sztywno ścieżki do folderów (bo były względne), czyli np. /home/nazwa/domains/mojanazwa.pl ... i tak dalej. Problem rozwiązany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.