2012-04-04 5 views
2

Ich habe ein kleines Problem mit der Art und Weise, wie meine Website funktioniert. Ich habe ein Python-Skript, das ich von der index.php-Seite ausführen möchte. Nun, wenn dieses Skript im Root-Verzeichnis ist, mit diesem Befehl kann ich es leicht ausführen:PHP Ausführen von Skript in Unterordner

<?php 
exec("myscript.py"); 
?> 

Dies läuft eigentlich das Python-Skript und das tut, was benötigt wird. Allerdings plane ich ein paar mehr Skript und möchte das Root-Verzeichnis so sauber wie möglich halten, daher habe ich mich gefragt, ob es möglich ist, dieses Skript von einem Subdir innerhalb meiner Wurzel auszuführen?

Aktuelle Setup:

Root - C:\wamp\www\homepage\ 
Python Script Folder - ...\homepage\python\ 

Wenn ich meine Skripte in dem Python-Ordner abgelegt, egal, was ich verwende, wird der PHP ausführt es nicht.

Versuchte:

<?php 
exec("/python/myscript.py") 
?> 

<?php 
exec("//python//myscript.py") 
?> 

<?php 
exec("\python\myscript.py") 
?> 

<?php 
exec("\\python\\myscript.py") 
?> 

<?php 
exec("python/myscript.py") 
?> 

<?php 
exec("python\myscript.py") 
?> 

<?php 
exec("../python/myscript.py") 
?> 

All dies und nichts bringt das verflixte Ding. Was mache ich falsch: [ Dammit!

+0

'exec ("Python/myscript.py") 'sollte funktionieren. Aber versuchen Sie 'exec (__ DIR__." /python/myscript.py ") – binarious

+0

@ binarious - beide scheinen zu scheitern ... :( – Meh

+1

vielleicht seit es in einem Ordner ist, scheitert das Python-Skript selbst. Vielleicht machen Sie eine einfache py Skript und Ausgabe eines Textes Ich bin mir nicht sicher, was das Python-Skript tut, noch habe ich jemals von PHP gelaufen, also ist das vielleicht gar nicht hilfreich :) – Ronnie

Antwort

1

Haben Sie versucht, die ausführbare Python direkt aufzurufen? Es hat für mich funktioniert. Ich hatte eine myscript.py wie folgt:

print 'hello' 
print 'world' 

und dann in ein Verzeichnis namens temp /.

Meine PHP in einer Datei temp.php wie folgt aufgerufen:

<?php 
exec('python temp/myscript.py',$output); 
print_r($output); 
?> 

Dann lief ich es und hier ist, was passiert:

$ php temp.php 
Array 
(
    [0] => hello 
    [1] => world 
)