web-dev-qa-db-fra.com

Comment charger un fichier PHP dans une variable?

J'ai besoin de charger un fichier PHP) dans une variable. Comme include();

J'ai chargé un simple fichier HTML comme ceci:

$Vdata = file_get_contents("textfile.txt");

Mais maintenant, je dois charger un fichier PHP.

90
Kombuwa

Je suppose que vous voulez obtenir le contenu généré par PHP, si c'est le cas, utilisez:

$Vdata = file_get_contents('http://YOUR_Host/YOUR/FILE.php');

Sinon, si vous voulez obtenir le code source du PHP), c'est la même chose qu'un fichier .txt:

$Vdata = file_get_contents('path/to/YOUR/FILE.php');
113
Alix Axel
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();

ob_get_clean ()

112
neobie

Si vous souhaitez charger le fichier sans l'exécuter via le serveur Web, procédez comme suit.

$string = eval(file_get_contents("file.php"));

Cela va charger puis évaluer le contenu du fichier. Le fichier PHP devra être entièrement formé avec <?php et ?> tags pour eval pour l’évaluer.

6
Jess

Si vous utilisez http: //, comme le suggère Eyze, vous ne pourrez lire que la sortie du script PHP. Vous ne pouvez lire le script PHP lui-même que s'il se trouve sur le même serveur que votre script en cours d'exécution. Vous pouvez alors utiliser quelque chose comme

$Vdata = file_get_contents('/path/to/your/file.php");
6
Jonathan Weiß

Théoriquement, vous pouvez simplement utiliser fopen, puis utiliser stream_get_contents.

$stream = fopen("file.php","r");
$string = stream_get_contents($stream);
fclose($stream);

Cela devrait lire le fichier entier dans $ string pour vous, et ne devrait pas l’évaluer. Bien que je sois surpris que file_get_contents ne fonctionne pas lorsque vous spécifiez le chemin local ....

4
Zeroshade

Vous pouvez également démarrer la mise en mémoire tampon de sortie, faire un include/require, puis arrêter la mise en mémoire tampon. Avec ob_get_contents (), vous pouvez simplement obtenir le contenu généré par cet autre fichier PHP) dans une variable.

2
Alex Weinstein

Si votre fichier contient une déclaration de retour comme celle-ci:

<?php return array(
  'AF' => 'Afeganistão',
  'ZA' => 'África do Sul',
  ...
  'ZW' => 'Zimbabué'
);

Vous pouvez obtenir ceci avec une variable comme celle-ci:

$data = include $filePath;
2
António Almeida

file_get_contents () ne fonctionnera pas si votre serveur a allow_url_fopen désactivé. La plupart des hébergeurs Web partagés l'ont désactivé par défaut en raison de risques de sécurité. De plus, dans PHP6, l'option allow_url_fopen n'existera plus et toutes les fonctions agiront comme si elle était désactivée de manière permanente. . C'est donc une très mauvaise méthode à utiliser.

Votre meilleure option à utiliser si vous accédez au fichier via http est cURL

1
Mark