Zusammenfassung
Ich erhalte diesen Fehler:
Cron.php undefinierter Index 'SCRIPT_FILENAME'
Warum befindet sich der folgende Code im Magento-Kern cron.php
?
// Only for urls
// Don't remove this
$_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']);
Mein Crontab hat also Folgendes (in cPanel - ja, ich hasse cPanel, aber ich habe keine Wahl ):
*/5 * * * * /bin/sh /home/user/public_html/cron.sh 2>&1
Beim Ausführen erhalte ich folgende Ausgabe:
Array
(
[MAILTO] => ***
[SHELL] => /usr/local/cpanel/bin/jailshell
[USER] => ***
[PATH] => /usr/bin:/bin
[PWD] => /home/***
[LANG] => en_US.UTF-8
[HOME] => /home/***
[SHLVL] => 2
[LOGNAME] => ***
[_] => /usr/bin/php
[PHP_SELF] =>
[REQUEST_TIME_FLOAT] => 1427981401.51
[REQUEST_TIME] => 1427981401
[argv] => Array
(
[0] => /home/***/public_html/cron.php
)
[argc] => 1
)
quelle
/usr/bin/php -d display_errors=1 -f cron.php
und die Fehler treten auf. Außerdem habe ich einen Test mitprint_r($_SERVER)
innerhalb dercron.php
und die Indizes existieren nicht.Da dies ein Top-Ergebnis in Google ist, weil es
SCRIPT_FILENAME
mit cron fehlt, werde ich mich einschalten.Für mich wurden auf einem anderen Ecom (CS-Cart auf cPanel OpenVZ + FastCGI) die fehlenden Indizes von cron gelöst / gefunden, indem der Pfad zu php in cron anstelle von nur
php
oder verwendet wurdephp-cli
. Führen Sie eswhich php
in der Shell aus oder verwenden Sie es dann im cPanel Cron Builder. Ich gehe davon aus, dass dies möglicherweise daran liegt, dass cPanel eine eigene interne Version von PHP verwendet, die möglicherweise mit einigen FastCGI-Rätseln übersät ist, obwohl ich mir immer noch nicht ganz sicher bin.Beispiele:
php /home/account/public_html/script.php
<- schlägt fehlphp-cli /home/account/public_html/script.php
<- schlägt fehl$(which php) /home/account/public_html/script.php
<- Funktioniert in der CLI als dynamische Route, schlägt jedoch im cPanel Cron Builder fehl/usr/local/bin/php /home/account/public_html/script.php
<- Funktioniert in cPanel Cron Builder, obwohl es sich um eine statische Route zu PHP handelt, sodass dies auf Ihrem Server möglicherweise anders istquelle
$(which php)
als ich meine Antwort dokumentierte. Dies sollte jedoch für andere nützlich sein und ist im Allgemeinen das, was ich normalerweise selbst verwenden würde. Ich habe jedoch vergessen, ob es cPanel oder Plesk war, die mein Problem verursacht haben.which php
, besonders mit dem CloudLinux / WHM Multi-PHP-Manager, der env in andere Versionen wirft. Apropos Zeug, das andere vielleicht brauchen, ich habe neulich mehr Probleme gehabt, als ich versucht habe, Vtiger dazu zu bringen, richtig zu validieren / zu laufenphp-cli
. Es wurde ein kleines Hilfsskript erstellt, das versucht, weitere Env-Es gibt möglicherweise zwei Lösungen für dieses spezielle / systemspezifische Problem, die mir bekannt sind:
In der Crontab: Fügen Sie die folgenden 2 Zeilen oben hinzu:
ODER
Wickeln Sie es in den CRON selbst ein:
quelle
Das hat bei Godaddy Cpanel für mich funktioniert:
Und ich musste modifizieren
cron.php
, einfach benutzenanstatt
Vielen Dank an Zurd, dass du deine Antwort gepostet hast, die mir meine nach so viel Schmerz gebracht hat !!!
quelle