2010-05-15 9 views
27

Je veux appeler un fichier PHP qui commence commeExécuter fichier php d'un autre php

<?php 
function connection() { 
    //Statements 
} 

j'appelle le PHP comme ceci:

<?php 
exec ('/opt/lampp/htdocs/stuff/name.php'); 
?> 

Je reçois:

line1-> cannot open ?: No such file 
line 3 //Connection: not found 
line 4 Syntax errror: "(" 

Pourquoi cela n'exécute-t-il pas correctement le fichier name.php?

Répondre

41

Il essaie de l'exécuter comme un script shell qui interprète votre jeton <?php comme bash, ce qui est une erreur de syntaxe. Il suffit d'utiliser include() ou l'un de ses amis:

Par exemple, dans a.php put:

<?php 
print "one"; 
include 'b.php'; 
print "three"; 
?> 

En b.php put:

<?php 
print "two"; 
?> 

Prints:

[email protected] ~ $ php a.php 
onetwothree 
+0

Ok, merci. J'utilise include() et ça marche! – nabrugir

+0

@skiria Si cela fonctionne, alors c'est la réponse acceptée? – tylermac

+0

désolé, je suis nouveau sur ce point et je ne sais pas que j'ai l'accepter la réponse .... – nabrugir

7

On dirait que vous essayez d'exécuter le code PHP directement dans votre shell. Votre shell ne parle pas PHP, donc il interprète votre code PHP comme s'il était dans la langue maternelle de votre shell, comme si vous aviez littéralement exécuté <?php sur la ligne de commande.

Les scripts shell commencent généralement par une ligne "shebang" qui indique au shell quel programme utiliser pour interpréter le fichier. Commencez votre dossier comme celui-ci:

#!/usr/bin/env php 
<?php 
//Connection 
function connection() { 

En outre, la chaîne vous passez à exec ne fait aucun sens. Il commence par un slash tout seul, il utilise trop de périodes dans le chemin, et il a une parenthèse droite.

Copiez le contenu de la chaîne de commande et collez-les sur votre ligne de commande. Si ce n'est pas le cas, alors exec ne sera probablement pas capable de l'exécuter non plus.

Une autre option consiste à modifier la commande que vous exécutez. Au lieu d'exécuter le script directement, exécutez php et passez votre script en tant qu'argument. Alors vous ne devriez pas avoir besoin de la ligne Shebang.

exec('php name.php'); 
+0

est-il un autre si un serveur a désactivé la fonction exec() –

+2

C'est une question que vous devriez [demander sur Stack Overflow] (http://stackoverflow.com/questions/ask), @Lord_linus. –

10

exec bombarde au système d'exploitation, et sauf si le système d'exploitation a une façon particulière de savoir comment exécuter un fichier, alors il va par défaut de le traiter comme un script shell ou similaire. Dans ce cas, il n'a aucune idée de comment exécuter votre fichier php. Si ce script doit absolument être exécuté à partir d'un shell, soit exécuter php passer le nom de fichier comme paramètre, par exemple

exec ('/usr/local/bin/php -f /opt/lampp/htdocs/.../name.php)') ; 

ou utilisez la punct en haut de votre script php

#!/usr/local/bin/php 
<?php ... ?> 
+0

Merci. J'ai aussi essayé exec ('/ usr/... -f /oopt.../name.php)' et ça a fonctionné. enfin j'utilise include() et ça marche. Merci pour votre réponse. – nabrugir

+0

pour punct read shebang –

1

Cela s'est avéré tout en travaillant sur un projet sur la plate-forme Linux.

exec('wget http://<url to the php script>) 

Cela fonctionne comme si vous exécutiez le script à partir du navigateur.

Espérons que cela aide !!

+2

Pourquoi les gens votent-ils? Y at-il une raison pour laquelle vous ne devriez pas le faire de cette façon? – davea0511

-6

exec('wget http://<url to the php script>') travaillé pour moi.

Il me permet d'intégrer deux fichiers php qui ont été conçus sous forme de pages web et de les exécuter sous forme de code pour faire le travail sans affecter la page d'appel

+0

Pourquoi les gens votent-ils? Y at-il une raison pour laquelle vous ne devriez pas le faire de cette façon? – davea0511

+1

Voter vers le bas parce que cette côtelette est copier et coller d'autres réponses comme réponse. – emotality

+0

Cela nécessite un serveur Web en cours d'exécution qui exécute le script PHP avec l'URL donnée – m13r

Questions connexes