[php] commandline php script oproepen vanaf het web

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil graag vanuit een php script die ik in m'n browser aanroep een commandline php script laten uitvoeren in de achtergrond maar het wil maar niet lukken.

Alle scripts of commandline commando's die ik uitvoer werken behalve als het een php script is.

Ik roep bijvoorbeeld op:

http://www.server.iets/commandline/index.php

met de volgende code:

code:
1
2
3
4
5
6
7
8
<?php

$temp1 = `/home/user/bizx_html/commandline/test.sh`;
print ("temp1: ".$temp1."<BR>\n");
$temp2 = `/home/user/bizx_html/commandline/test.php`;
print ("temp2: ".$temp2."<BR>\n");

?>


test.sh:

code:
1
2
#!/bin/sh
echo "test1"


test.php:

code:
1
2
#!/usr/local/php/cgi-php/php -q
<?php print ("test2\n"); ?>



de output die ik krijg is het volgende:

--
temp1: test1
temp2:
--

terwijl het als ik het vanaf de shell zelf aanroep wel correct werkt. Het path naar php zou goed moeten staan volgens bij phpinfo().

Waarom zou dit niet werken?

Een dirty oplossing die wel werkt is de test.sh op te roepen die dan lynx "http://www.server.iets/commandline/test.php" doet. Het oproepen van het php script rechtstreeks vanuit test.sh werkt ook niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Wellicht zijn de functies exec() en shell_exec() iets voor je ;)

Zie ook: http://nl2.php.net/exec

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
die had ik ook al geprobeerd maar hetzelfde resultaat dat het niet werkt.

Acties:
  • 0 Henk 'm!

  • ebas
  • Registratie: Maart 2001
  • Laatst online: 20-04-2017

ebas

 

Al geprobeerd naar een file te schrijven? Misschien dat php-cgi met een ander soort output werkt? Op de std-err ofzo, weut ik het :) maar dat je iig zeker weet dat het script écht niet gedraaid wordt..

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:29

Tjark

DON'T PANIC

Als PHP alleen als apache module op de server staat zal het niet lukken. Staat PHP als CGI dan moet je ff opzoeken waar php staat en dan iets als
code:
1
$blaat = `/usr/local/path/ofzo/php /web/user/script.php`;

kunnen doen.

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ebas:
Ja, al geprobeerd met het mail() commando, vanaf shell zelf het php script oproepen (./test.php) krijg ik wel een mailtje binnen, vanuit http://.../index.php oproepen geen mailtje

TjarkVerhoeven:
PHP staat als CGI erop, als ik het zelf vanaf de shell prompt doe werkt het wel correct en krijg ik output, alleen een php script vanuit een php script werkt niet.

het path staat goed denk ik want die heb ik uit phpinfo() gehaald:
_SERVER["SCRIPT_FILENAME"] : /usr/local/php/cgi-php/php
en zo werkt het vanaf de shell zelf ook correct.

Acties:
  • 0 Henk 'm!

Verwijderd

Maak anders een daemon van je PHP script. Laat deze in de achtergrond checken of er iets is geschreven naar een (fifo) file. ZOdra er iets is geschreven kan deze dmv exec() je shell script aanroepen.

Je frontend schrijft naar het bestand dat de daemon checkt.

Acties:
  • 0 Henk 'm!

Verwijderd

Check ook ff of je host dat wel ondersteund. Met wideXS moet ik cmd scripts trigeren met perl bijvoorbeeld omdat php geen comandline mag uitvoeren.

[ Voor 1% gewijzigd door Verwijderd op 24-07-2003 11:07 . Reden: tikfoutje ;) ]

Pagina: 1