2010-03-08 5 views
1

J'ai le script PHP suivant:système de prise de problème appels avec des scripts PHP

<?php 
    $fortune = `fortune`; 
    echo $fortune; 
?> 

mais la sortie est tout simplement vide (pas d'erreurs visibles moulinée).

Cependant, si je lance php -a, cela fonctionne:

php > echo `fortune`; 
Be careful of reading health books, you might die of a misprint. 
     -- Mark Twain 
php > 

Suis-je manque une directive de configuration ou quelque chose qui serait la cause? J'ai donc essayé d'exécuter mon script en utilisant $ php-cgi fortunetest.php et cela a fonctionné comme prévu. Peut-être que le problème est avec Apache2?

+2

Ce serait probablement une meilleure réponse sur stackoverflow.com –

+0

oui, poser cette question sur stackoverflow –

+0

Qu'est-ce que $ PATH est Apache courir avec? Où vit la fortune? –

Répondre

1

Quoi qu'il en soit, j'ai trouvé la solution: fortune vivaient dans /usr/games, donc je pensais que ce serait peut-être un problème $PATH, mais quand je l'ai su www-data et couru $ fortune cela a fonctionné comme prévu, et /usr/games était en $PATH. Apparemment, Apache utilisait une variable différente $PATH même si elle fonctionnait sous l'utilisateur www-data, donc j'ai réécrit le script pour utiliser /usr/games/fortune au lieu de fortune et cela a fonctionné. Depuis fortune n'était pas le point du script, c'était une perte de temps, mais la leçon a appris.

-1

Honnêtement, je ne sais pas. Cependant, il se peut que vous deviez dire écho $fortune à la place.

0

La commande fortune génère simplement un devis ou une citation célèbre pour vous. Vous pouvez simplement stocker ces quotations dans un fichier texte plat, ou si vous avez une base de données, stockez-les dans un tableau. Ensuite, utilisez la fonction rand() ou similaire en PHP pour générer un nombre aléatoire et utilisez ce numéro pour obtenir cette ligne dans le fichier/tableau des citations. De cette façon, votre script PHP ne dépend pas de si la commande fortune du système est installée ou non.

0

Utilisez des chemins complets comme /usr/games/fortune au lieu de seulement fortune. Apache ne développe pas toujours automatiquement les chemins.

<?php passthru('/usr/games/fortune'); ?> 

Pour trouver un chemin complet faire which dans la coquille par exemple.

which fortune 
Questions connexes