8
votes

Comment incluez-moi un script PHP à Python?

J'ai un script php (News-generatorator.php) qui, quand je l'incluais, attrape un tas d'actualités et les imprime. En ce moment, j'utilise Python pour mon site Web (CGI). Quand j'utilisais PHP, j'ai utilisé quelque chose comme celui-ci sur la page "Actualités":

page_html = "<h1>News and Updates</h1>"
news_script_output = php("news-generator.php") //should return a string
print page_html + news_script_output


3 commentaires

"J'ai simplifié l'exemple de simplicité." - Quoi d'autre le simplifieriez-vous? ;)


@MusicFreak: rigole? Efficacité? beauté?


J'ai travaillé avec des personnes qui "simplifiaient l'exemple" pour obscurcir leur incompétence. J'espère que ce n'est pas le cas ici.


5 Réponses :


7
votes

php est un programme. Vous pouvez exécuter n'importe quel programme avec Subprocess .

La partie difficile simule l'environnement CGI entier que PHP s'attend.


3 commentaires

Bon point. Cela dépend de quel genre de PHP vous courez, je suppose.


PHP-CLI attend-il ce type d'environnement?


PHP CGI attend beaucoup d'environnement. La CLI semble nécessiter une configuration beaucoup moins de l'environnement. Voici le Doc définitif. PHP.net/Manual/fr/Feats.commandline.php .



11
votes
import subprocess

def php(script_path):
    p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
    result = p.communicate()[0]
    return result

# YOUR CODE BELOW:
page_html = "<h1>News and Updates</h1>"
news_script_output = php("news-generator.php") 
print page_html + news_script_output

1 commentaires

Le seul problème est que, comme s.lott mentionné, simulant l'environnement CGI que PHP veut.



0
votes

Je pense que la meilleure réponse serait d'avoir Apache rendant les deux pages séparément, puis utilisez JavaScript pour charger cette page dans une DIV. Vous avez le léger ralentissement de la charge AJAX, mais vous n'avez alors pas à vous en soucier.

Il existe une chose de widget open source qui exécutera plusieurs langues sur 1 page, mais je ne me souviens pas de ce que c'est appelé.


0 commentaires

0
votes

Vous pouvez utiliser Urllib pour obtenir la page du serveur (localhost) et l'exécuter dans le bon environnement pour PHP. Pas jolie, mais ça va marcher. Cela peut causer des problèmes de performance si vous le faites beaucoup.


0 commentaires

1
votes

Peut-être sur la rubrique, mais si vous voulez faire cela de manière à ce que vous puissiez accéder aux vars et créé par le script PHP (par exemple, un tableau des actualités), votre meilleur meilleur sera de faire l'exécutif de la Script PHP, mais renvoyez une maquette codée JSON d'éléments de PHP en tant que chaîne, puis JSON les déco sur le côté Python et effectuez votre génération et son itération HTML.


0 commentaires