2017-10-14 4 views
0

Ich bin ein Neuling für Python und versuche, ein sehr einfaches Python-Skript in Wordpress auszuführen. Ich habe die Antworten auf this Frage aber ohne Glück verfolgt.Ausführen eines Python-Skripts in Wordpress

Zuerst habe ich erstellt und aktiviert ein Wordpress-Plugin folgendes mit PHP:

<?php # -*- coding: utf-8 -*- 
/* Plugin Name: Python embedded */ 

add_shortcode('python', 'embed_python'); 

function embed_python($attributes) 
{ 
    $data = shortcode_atts(
     [ 
      'file' => 'firstpython.py' 
     ], 
     $attributes 
    ); 

    $handle = popen(__DIR__ . '/' . $data['file'], 'r'); 
    $read = ''; 

    while (! feof($handle)) 
    { 
     $read .= fread($handle, 2096); 
    } 

    pclose($handle); 

    return $read; 
} 

ich die firstpython.py Datei in den Ordner des Plugins gespeichert, die wie folgt aussieht:

#!/usr/bin/python 
print ("It works!") 

ich überprüft haben, Das/usr/bin/python ist der korrekte Speicherort über SSH.

Schließlich habe ich den [python] shortcode in eine Wordpress-Seite eingefügt. Aber wenn ich auf diese Seite gehe, gibt es überhaupt keine Ausgabe, aber auch keine Fehler.

Wenn es einen Unterschied macht, verwende ich 1and1 Managed Wordpress-Hosting. Weiß jemand, wo ich falsch liege? Ich mache wahrscheinlich nur einen Anfängerfehler.

Fußnote: Ich bin ein Datenanalytiker, kein Programmierer, so entschuldigt ich mich, wenn ich die Mechanik dessen, was ich erreichen möchte, falsch verstanden habe. Ich bin sehr vertraut mit R, aber die Installation von R auf einem Server ist über mich hinaus, daher der Umzug nach Python. Vielleicht bin ich auch hier nicht in der Lage.

+2

Ist die Fehlerberichterstattung aktiviert? Popen kann auf vielen freigegebenen Hosts deaktiviert sein. – Devon

Antwort

0

Wie in den Kommentaren der von Ihnen geposteten Frage vorgeschlagen, müssen Sie möglicherweise am Anfang Ihres Python-Skripts #!/usr/bin/env python hinzufügen, abhängig von der Maschine, auf der es ausgeführt wird. Und es scheint, dass die erste Zeile Ihres Skripts anders ist.