Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Sitemap - wywołanie za pomocą CRON i PHP


Rekomendowane odpowiedzi

Witam,

 

Mam problem z IP.SEO a dokładniej z konfiguracją zadania CRON dla sitemap.xml.

Dostałem poradę z supportu dHosting żebym stworzył plik run_task.php o takiej zawartości:

 

<?php

$_SERVER['argv'][1] = "37f5c3ef8cb4235bcf561f3f09b4d66e";
include ("task.php");
W dzienniku zdarzeń dostaję taką informację:

 

#!/usr/bin/php -q

Warning: require_once(IPS_ROOT_PATHsources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 31

Fatal error: require_once(): Failed opening required 'IPS_ROOT_PATHsources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 31
 

task.php

define( 'IPS_ENFORCE_ACCESS', TRUE );
define( 'IPS_IS_SHELL', TRUE );
require_once( str_replace( '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/
	
$registry = ipsRegistry::instance();
$registry->init();

if ( isset( $_SERVER['argv'][1] ) )
{
	ipsRegistry::$request['ck'] = $_SERVER['argv'][1];
}

Linia 31 i 32:

 

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/
Dostałem podpowiedź z supportu:

 

Proszę zwrócić uwagę, że nie jest zdefiniowana stała IPS_ROOT_PATH. Dlatego skrypt nie może zaincludować poprawnie plików:

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/

require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/

Jeszcze naszła mnie jedna myśl
failed to open stream: No such file or directory in
Jeśli przyjrzeć się temu:
'sources/base/ipsRegistry.php' );/*noLibHook*/
to rzeczywiście nie ma takiego katalogu w public_html ale za to jest w admin/ a zmiana w task.php tej ścieżki nie pomaga.

Mogę prosić o jakieś rady ?

Edytowane przez Budyn

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Dodaj tak:

define( 'DOC_IPS_ROOT_PATH', str_replace( "\\", "/", dirname( __FILE__ ) ) . '/' ); 

PodNad:

require_once( str_replace( '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/
  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Dodałem i w dzienniku prawie bez zmian, zmieniła się linia z 31 na 32(co jest spowodowane tym że dodałem Twój kod DawPi):
 

#!/usr/bin/php -q

Warning: require_once(IPS_ROOT_PATHsources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 32

Fatal error: require_once(): Failed opening required 'IPS_ROOT_PATHsources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 32
Edytowane przez Budyn

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

Dodałem tak:
 

define( 'IPS_ENFORCE_ACCESS', TRUE );
define( 'IPS_IS_SHELL', TRUE );
define( 'DOC_IPS_ROOT_PATH', str_replace( "\\", "/", dirname( __FILE__ ) ) . '/' );
require_once( str_replace( '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

Efekt dalej ten sam:
 

#!/usr/bin/php -q

Warning: require_once(IPS_ROOT_PATHsources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 32

Fatal error: require_once(): Failed opening required 'IPS_ROOT_PATHsources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 32

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Daj tak:

define( 'IPS_ENFORCE_ACCESS', TRUE );

define( 'IPS_IS_SHELL', TRUE );

define( 'CP_DIRECTORY', 'admin' );

define( 'DOC_IPS_ROOT_PATH', str_replace( "\\", "/", dirname( __FILE__ ) ) . '/' );

define( 'IPS_ROOT_PATH', DOC_IPS_ROOT_PATH . CP_DIRECTORY . "/" );

require_once( str_replace( '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Efekt:
 

#!/usr/bin/php -q

Warning: require_once(/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Fatal error: require_once(): Failed opening required '/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34
require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/

Nadpisałem przed chwilą task.php z czystej paczki prosto z panelu IPS ale też nie pomogło.

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Masz ten plik na FTP: /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php ?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Zmień:

require_once( str_replace( '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

Na:

require_once( str_replace( IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/
  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Dalej:

#!/usr/bin/php -qWarning: require_once(/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34Fatal error: require_once(): Failed opening required '/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Tylko czemu on szuka w folderze interface/ folderu /admin

/interface/admin/sources

w chwili obecnej mój task.php:

define( 'IPS_ENFORCE_ACCESS', TRUE );
define( 'IPS_IS_SHELL', TRUE );
define( 'CP_DIRECTORY', 'admin' );
define( 'DOC_IPS_ROOT_PATH', str_replace( "\\", "/", dirname( __FILE__ ) ) . '/' );
define( 'IPS_ROOT_PATH', DOC_IPS_ROOT_PATH . CP_DIRECTORY . "/" );
require_once( str_replace( IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/
	
$registry = ipsRegistry::instance();
$registry->init();

 

Edytowane przez Budyn

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Zmień to:

require_once( str_replace( IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

Na:

require_once( str_replace( DOC_IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/
  • Lubię to 2

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

@DawPi, Nie wiem skąd Ty bierzesz tyle cierpliwości ale zazdroszczę Ci jej.

 

Powyższa zmiana i:
 

#!/usr/bin/php -q

Warning: require_once(/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Fatal error: require_once(): Failed opening required '/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Takie komunikaty dostaje w dPanel przy zadaniu CRON w sekcji dziennik.

Dodano:

Ta ścieżka mnie strasznie męczy, nie wiem czy to coś pomoże:

pre_1363705118__cron.png

Teraz zmieniłem "katalog roboczy" i czekam na wykonanie zadania.
 

Edytowane przez Budyn
  • Lubię to 1

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

A więc zrobiłem tak:
Stworzyłem nowe zadanie w CRON i w Katalog roboczy wpisałem: ~/g-zone.pl/public_html/ i wgrałem czysty task.php
Błąd:
 

#!/usr/bin/php -q

Warning: require_once(IPS_ROOT_PATHsources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 31

Fatal error: require_once(): Failed opening required 'IPS_ROOT_PATHsources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 31

A tu z zmianami które mam od Ciebie(też w dPanel zmieniłem ścieżkę na ~/g-zone.pl/public_html/ z ~/g-zone.pl/public_html/interface:
 

#!/usr/bin/php -q

Warning: require_once(/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Fatal error: require_once(): Failed opening required '/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Czyli nic nie  daje zmiana "katalog roboczy" w dPanel.

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Powinno być bez tego interface:

/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

DawPi ja wiem o tym dlatego się dziwiłem w postach wyżej że dodaje tą ścieżkę.

Mam teraz zrobione tak:
pre_1363745814__cron_1.png

To jest to zadanie na "szaro" zaznaczone.
W dzienniku tego zadania pokazuje mi tak:

#!/usr/bin/php -q

Warning: require_once(/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php): failed to open stream: No such file or directory in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

Fatal error: require_once(): Failed opening required '/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/admin/sources/base/ipsRegistry.php' (include_path='.:/usr/local/lsws/php_64/5.2.16-dh27/lib/php') in /home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php on line 34

a to mój task.php z poprawkami od Ciebie DawPi
 

define( 'IPS_ENFORCE_ACCESS', TRUE );
define( 'IPS_IS_SHELL', TRUE );
define( 'CP_DIRECTORY', 'admin' );
define( 'DOC_IPS_ROOT_PATH', str_replace( "\\", "/", dirname( __FILE__ ) ) . '/' );
define( 'IPS_ROOT_PATH', DOC_IPS_ROOT_PATH . CP_DIRECTORY . "/" );
require_once( str_replace( DOC_IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );/*noLibHook*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );/*noLibHook*/

a to run_task.php który znajduje się w tym samym katalogu co task.php (dodatkowo można go ręcznie wywołać http://www.g-zone.pl/interface/run_task.php)

<?php

$_SERVER['argv'][1] = "37f5c3ef8cb4235bcf561f3f09b4d66e";
include ("task.php");

W acp -> zadania -> przy zadaniu:
pre_1363746295__site_gene.png

Klikam w "trybik" i dostaje takie polecenie:
 

/home/klient.dhosting.pl/budyn/g-zone.pl/public_html/interface/task.php 37f5c3ef8cb4235bcf561f3f09b4d66e
Edytowane przez Budyn

pre_1383606035__stonefly2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • 10 miesięcy temu...

Nie wiem Budyń, czy rozwiązałeś swój problem, ale ja owszem i dlatego podzielę się z Wami rozwiązaniem. Dzięki pomocy administracji hostingu udało się stworzyć właściwy plik run_task.php. Przetestowałem właśnie i wszystko działa jak należy. A więc do rzeczy.

 

Postępujemy zgodnie z poradnikiem do punktu 3: http://forum.invisionize.pl/tutorials/article/58-cron-tworzenie-sitemap/ a następnie:

 

4. Tworzymy sobie plik tekstowy o nazwie run_task.php i treści:

<?php
$_SERVER['argv'][0] = '/home/klient********/********/twojastrona.pl/public_html/interface/task.php';
$_SERVER['argv'][1] = "tutaj wstawiamy treść uzyskaną w punkcie 2 poradnika";
include ("task.php");
?>

i uploadujemy go na FTP do folderu public_html/interface. Nadajemy dla tego pliku chmody 777.

 

5. Edytujemy plik task.php, zamieniając w 30 linijce:

require_once( str_replace( IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

na:

//require_once( str_replace( IPS_ROOT_PATH . '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/
require_once( str_replace( '/interface/task.php', '/initdata.php', $_SERVER['argv'][0] ) );/*noLibHook*/

zapisujemy, uploadujemy na ftp tam gdzie był czyli do public_html/interface i upewniamy się, że chmody są ustawione na 777.

 

6. Pozostaje utworzyć nowe zadanie CRON. Ja wykorzystałem do tego celu program wget (przy php był problem z odczytem pliku public_html) więc ustawiamy:

 

a) dowolny profil,

b) Program: wget,

c) ścieżka do pliku: http://www.twojastrona.pl/interface/run_task.php,

d) katalog roboczy: ~/public_html/interface/

e) Interwał: wybieramy jaki chcemy

 

7. Zapisujemy, upewniamy się, że zadanie jest włączone i o określonej porze pojawi się w katalogu głównym na ftp uaktualniony plik sitemap.xml dzięki wykonanemu zadaniu CRON :)

 

Pozdrawiam :)

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 lata później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.