Help Jak prawidłowo podać ścieżkę do pliku php w crontab?

Status
Not open for further replies.

Vit

Nowy użytkownik
Noobie
Apr 19, 2022
11
1
0
1
54
QNAP
TS-110
Ethernet
100 Mbps
Mam problem z podaniem ścieżki do pliku /share/Web/zapis_cron.php, który będzie się odświeżał co 10 min.
Próbowałem tak:
Bash:
 */10 * * * * /usr/local/bin/wget -q /share/Web/zapis_cron.php
 */10 * * * * /usr/local/apache/bin/php  /share/Web/zapis_cron.php
i nic nie działa :(
 
Solution
Udało się rozwiązać ten problem :)
użyłem wpisu:

*/10 * * * * /usr/local/apache/bin/php /share/Web/zapis_cron.php

i poprawiłem błędy w testowym pliku zapis_cron.php bo one blokowały działanie. Spróbowałem dodać dane do bazy qsl by sprawdzić taką opcję no i zadziałało :). Co 10 minut pojawiał się nowy rekord. Nie dało mi spokoju, co takiego błędnego było w poprzednim kodzie i doszedłem :) powody bardzo prozaiczne teraz jak już wiem jakie.

Przed użyciem date('Y_m_d'); należało zdeklarować strefę czasową date_default_timezone_set("Europe/Warsaw");

Drugi błąd to podanie ścieżki do pliku txt, ja użyłem standardowo $sciezka = "test/dane.txt"; a należało podać bezwzględną
$sciezka =...
Plik tymczasowo zapisuje godzinę, ale docelowo ma zapisywać dane z stacji pogody.
 
Plik php napisałem sam w RJ txtEd

Jeżeli otworze go w przeglądarce to działa i towoty plik txt z datą i godziną (to tak tymczasowo)
jak zrobić by automatycznie uruchamiał się.
 
ostatni raz pytam skąd masz to:
1650379991473.png
 
spoko - idziemy do przodu
wklep w ssh (jako admin ..)
/usr/local/apache/bin/php -v , wypluło wersję PHP ?
 
Tak

PHP 5.6.40 (cli) (built: Dec 12 2021 13:25:54)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
 
Wywaliło mi 7 ostrzeżeń w pliku /share/HDA_DATA/Web/zapis_cron.php
 
Ostrzeżenie: date(): poleganie na ustawieniach strefy czasowej systemu nie jest bezpieczne. *Musisz* użyć ustawienia date.timezone lub funkcji date_default_timezone_set(). Jeśli użyłeś którejkolwiek z tych metod i nadal otrzymujesz to ostrzeżenie, najprawdopodobniej błędnie wpisałeś identyfikator strefy czasowej. Na razie wybraliśmy strefę czasową „UTC”, ale ustaw date.timezone, aby wybrać swoją strefę czasową. w /share/HDA_DATA/Web/zapis_cron.php w linii 3

Ostrzeżenie: date(): poleganie na ustawieniach strefy czasowej systemu nie jest bezpieczne. *Musisz* użyć ustawienia date.timezone lub funkcji date_default_timezone_set(). Jeśli użyłeś którejkolwiek z tych metod i nadal otrzymujesz to ostrzeżenie, najprawdopodobniej błędnie wpisałeś identyfikator strefy czasowej. Na razie wybraliśmy strefę czasową „UTC”, ale ustaw date.timezone, aby wybrać swoją strefę czasową. w /share/HDA_DATA/Web/zapis_cron.php w linii 8

Ostrzeżenie: fopen(test/2022_04_19.txt): nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu w /share/HDA_DATA/Web/zapis_cron.php w linii 12

Ostrzeżenie: filesize(): statystyka nie powiodła się dla test/2022_04_19.txt w /share/HDA_DATA/Web/zapis_cron.php w linii 13.

Ostrzeżenie: fread() oczekuje, że parametr 1 będzie zasobem, wartość logiczna podana w /share/HDA_DATA/Web/zapis_cron.php w linii 13.

Ostrzeżenie: fopen(test/2022_04_19.txt): nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu w /share/HDA_DATA/Web/zapis_cron.php w wierszu 19

Ostrzeżenie: fputs() oczekuje, że parametr 1 będzie zasobem, wartość logiczna podana w /share/HDA_DATA/Web/zapis_cron.php w wierszu 22.

Ostrzeżenie: fclose() oczekuje, że parametr 1 będzie zasobem, wartość logiczna podana w /share/HDA_DATA/Web/zapis_cron.php w wierszu 25

Ostrzeżenie: plik(test/2022_04_19.txt): nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu w /share/HDA_DATA/Web/zapis_cron.php w wierszu 27

Ostrzeżenie: implode(): Nieprawidłowe argumenty przekazane w /share/HDA_DATA/Web/zapis_cron.php w wierszu 27
15_51_58
Post automatically merged:

[~] # /share/Web//test/2022_04_19.txt
-sh: /share/Web//test/2022_04_19.txt: Permission denied
[~] #
 
Dziękuję za pomoc, przynajmniej dowiedziałem się dlaczego i nauczyłem się jak korzystać z wiersza poleceń, sprawdzać poprawność kodu php :)
Post automatically merged:

Dziwi mnie to zachowanie skryptu php bo jak otworze w przeglądarce to zapisuje i otwiera się :(
 
Dziwi mnie to zachowanie skryptu php bo jak otworze w przeglądarce to zapisuje i otwiera się
Deweloperem PHP to raczej nie jesteś ?

Twój model QNAP to TS-110 , masz tam stare PHP 5.6 , czy pisałeś skrypt pod tą wersję ?
Czy skrypt zakłada że robi pliki we właściwym miejscu ? Czy ścieżki są poprawne ?

Wracając do głównego tematu:
Bash:
nano /etc/config/crontab
dodaj linię która działa (czyli #2 z Twojego posta)
zapisz zmiany
Bash:
crontab /etc/config/crontab && /etc/init.d/crond.sh restart

gdybyś miał nasa na CPU Intela/AMD - to powiedziałbym zainstaluj Qnapclub Store: WebCrontab i edytuj .. no ale masz co masz.
 
Tak myślałem ze muszę dodać 2 opcje. Po wykomentowaniu kodu php w pliku zapis_cron.php nie ma błędów no ale nie zapisuje danych do .txt.
Spróbuje zrobić zapis do bazy i zobaczę.
Już dotarłem do tej strony :) niestety mam tylko Ts112 (bo tu nie było takiej opcji więc wybrałem Ts110).
Mam plan zmienić bo tego mam już ponad 10 lat
myślałem o Ts 251D
Wielkie Dzięki za pomoc jak mi się uda to odezwę się :)
 
Udało się rozwiązać ten problem :)
użyłem wpisu:

*/10 * * * * /usr/local/apache/bin/php /share/Web/zapis_cron.php

i poprawiłem błędy w testowym pliku zapis_cron.php bo one blokowały działanie. Spróbowałem dodać dane do bazy qsl by sprawdzić taką opcję no i zadziałało :). Co 10 minut pojawiał się nowy rekord. Nie dało mi spokoju, co takiego błędnego było w poprzednim kodzie i doszedłem :) powody bardzo prozaiczne teraz jak już wiem jakie.

Przed użyciem date('Y_m_d'); należało zdeklarować strefę czasową date_default_timezone_set("Europe/Warsaw");

Drugi błąd to podanie ścieżki do pliku txt, ja użyłem standardowo $sciezka = "test/dane.txt"; a należało podać bezwzględną
$sciezka = "/share/Web/test/dane.txt"; $stareDane = fread($fp, filesize($sciezka));

trochę mnie to zdziwiło.
 
Solution
należało podać bezwzględną
albo zmienić katalog gdzie to pracuje za pomocą chdir ;)

strefę czasową dla PHP - możesz ustawić w pliku php.ini

pliki txt są passe, żyjemy w czasach JSON'a ;)

ale działa i to najważniejsze, dużo się nauczyłeś.
 
  • Like
Reactions: Vit
Stefę czasową w php.ini mam ustawioną i to mnie też zdziwiło. Pisanie w php i js to moje takie poboczne hobby, nie zawsze mam czas na zgłębianie wiedzy. Są momenty że chce dodać coś nowego na stronę i wtedy działam i męczę się. Dziękuję z a pomoc.
 
Status
Not open for further replies.

Users search this thread by keywords

  1. cron