Hi Leute!
Ich rufe ein script per Cron auf php /home/user/srcipt.php
dieses wird von der Shell wenn ich mich anmelde normal durchlaufen. Der Cron fabriziert folgende Ausgabe....was ist das?
Ausgabe des Befehls php /home/user/script.php ...
Content-type: text/html
X-Powered-By: PHP/4.3.1
# exec_cron.cgi
# Execute an existing cron job, and display the output
require './cron-lib.pl';
&ReadParse();
@jobs = &list_cron_jobs();
$job = $jobs[$in{'idx'}];
&can_edit_user(%access, $job->{'user'}) || &error($text{'exec_ecannot'});
&foreign_require("proc", "proc-lib.pl");
# split command into command and input
$job->{'command'} =~ s/\%//g;
@lines = split(/%/ , $job->{'command'});
foreach (@lines) { s//%/g; }
for($i=1; $i<@lines; $i++) {
$input .= $lines[$i]."n";
}
$| = 1;
$theme_no_table++;
&header($text{'exec_title'}, "");
print "<hr>n";
&additional_log('exec', undef, $lines[0]);
&webmin_log("exec", "cron", $job->{'user'}, $job);
# Remove variables that wouldn't be in the 'real' cron
foreach $e ('SERVER_PORT', 'GATEWAY_INTERFACE', 'WEBMIN_VAR', 'SERVER_ROOT',
'REMOTE_USER', 'SERVER_ADMIN', 'REQUEST_METHOD', 'REMOTE_HOST',
'REMOTE_ADDR', 'SERVER_SOFTWARE', 'PATH_TRANSLATED', 'QUERY_STRING',
'MINISERV_CONFIG', 'SERVER_NAME', 'SERVER_PROTOCOL', 'REQUEST_URI',
'DOCUMENT_ROOT', 'WEBMIN_CONFIG', 'SESSION_ID', 'PATH_INFO',
'BASE_REMOTE_USER') {
delete($ENV{$e});
}
foreach $e (keys %ENV) {
delete($ENV{$e}) if ($e =~ /^HTTP_/);
}
# Set cron environment variables
foreach $e (&read_envs($job->{'user'})) {
$ENV{$1} = $2 if ($e =~ /^(S+)s+(.*)$/);
}
# Get command and switch uid/gid
@uinfo = getpwnam($job->{'user'});
$ENV{"HOME"} = $uinfo[7];
$ENV{"SHELL"} = "/bin/sh";
$ENV{"LOGNAME"} = $ENV{"USER"} = $job->{'user'};
$( = $uinfo[3];
$) = "$uinfo[3] $uinfo[3]";
($>, $<) = ($uinfo[2], $uinfo[2]);
# Execute cron command and display output..
print &text('exec_cmd', "<tt>$lines[0]</tt>"),"<p>n";
print "<pre>";
$got = &foreign_call("proc", "safe_process_exec",
$lines[0], 0, 0, STDOUT, $input, 1);
print "<i>$text{'exec_none'}</i>n" if (!$got);
print "</pre>n";
print "<hr>n";
&footer("edit_cron.cgi?idx=$in{'idx'}", $text{'edit_return'},
"", $text{'index_return'});
PHP per Cron aufruf
Re: PHP per Cron aufruf
Er sollte es ausführen, weil wenn ich es von der Shell aus starte kommt nicht so ein ECHO.
Re: PHP per Cron aufruf
Was erwartest Du, wenn Du ein Perlscript mit PHP ausführen willst??? Ich mein, woher soll PHP denn die Perl-Befehle kennen und ausführen?
Also entweder Du führst das mit Perl aus oder Du schreibst es mit PHP, so wirste aber ned viel weiter kommen ;)
Also entweder Du führst das mit Perl aus oder Du schreibst es mit PHP, so wirste aber ned viel weiter kommen ;)
Re: PHP per Cron aufruf
Ich hab was gefunden - er meinte eigentlich sowas
0 * * * * /usr/local/bin/php /absoluter/pfad/zur/phpdatei.php >/dev/null
Sollte es aber so sein, dass nur die "Version mit --with-apxs" vorhanden ist (PHP als Apache Modul), würde man einen für die Kommandozeile geeigneten Browser (z.B. Lynx) verwenden, wodurch der "crontab"-Eintrag ungefähr so ausschaut.:
0 * * * * lynx --dump http://domain.tld/phpdatei.php >/dev/null
0 * * * * /usr/local/bin/php /absoluter/pfad/zur/phpdatei.php >/dev/null
Sollte es aber so sein, dass nur die "Version mit --with-apxs" vorhanden ist (PHP als Apache Modul), würde man einen für die Kommandozeile geeigneten Browser (z.B. Lynx) verwenden, wodurch der "crontab"-Eintrag ungefähr so ausschaut.:
0 * * * * lynx --dump http://domain.tld/phpdatei.php >/dev/null
Re: PHP per Cron aufruf
Nein, PHP funktioniert ja einwandfrei... er führt die Datei mit PHP aus. Nur ist es bei PHP (anders als bei Perl) eben so, dass nur Teile, die in ein <?php ?> eingeschlossen sind ausgeführt werden. Alles andere wird unbesehen zurückgegeben.
Er hat (weil das ja kein PHP-Script ist) kein solchen Blöcke drin, also wird alles einfach ausgegeben... erkennst Du auch an den zwei Headern, die PHP korrekt ausgibt...
Er hat (weil das ja kein PHP-Script ist) kein solchen Blöcke drin, also wird alles einfach ausgegeben... erkennst Du auch an den zwei Headern, die PHP korrekt ausgibt...