Jump to content

Hosting dHosting.pl - 1015% rabat! Zwiększamy rabat!

Sitemap - wywołanie za pomocą CRON i PHP


Recommended Posts

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 ?

Edited by Budyn

pre_1383606035__stonefly2.gif

Link to post
Share on other sites
  • 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*/
  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to post
Share on other sites

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
Edited by Budyn

pre_1383606035__stonefly2.gif

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 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*/

  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 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.

Link to post
Share on other sites

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

Nie ma go w tej lokalizacji ale jest w admin:

 

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

pre_1383606035__stonefly2.gif

Link to post
Share on other sites
  • 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*/
  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to post
Share on other sites

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();

 

Edited by Budyn

pre_1383606035__stonefly2.gif

Link to post
Share on other sites
  • 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*/
  • Like 2

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to post
Share on other sites

@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.
 

Edited by Budyn
  • Like 1

pre_1383606035__stonefly2.gif

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 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.

Link to post
Share on other sites

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
Edited by Budyn

pre_1383606035__stonefly2.gif

Link to post
Share on other sites
  • 10 months later...

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 :)

  • Like 1
Link to post
Share on other sites
  • 2 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.