Как загрузить PHP-файл в переменную?
Мне нужно загрузить PHP-файл в переменную. Как будто include();
Я загрузил простой HTML-файл, подобный этому:
$Vdata = file_get_contents("textfile.txt");
Но теперь мне нужно загрузить PHP-файл.
8 answers
Я полагаю, вы хотите получить контент, сгенерированный PHP, если это так, используйте:
$Vdata = file_get_contents('http://YOUR_HOST/YOUR/FILE.php');
В противном случае, если вы хотите получить исходный код PHP-файла, это то же самое, что и файл .txt:
$Vdata = file_get_contents('path/to/YOUR/FILE.php');
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();
Если вы используете http://, как предложил эйз, вы сможете прочитать только вывод PHP-скрипта. Вы можете прочитать сам PHP-скрипт только в том случае, если он находится на том же сервере, что и ваш запущенный скрипт. Затем вы могли бы использовать что-то вроде
$Vdata = file_get_contents('/path/to/your/file.php");
Если вы хотите загрузить файл, не запуская его через веб-сервер, должно сработать следующее.
$string = eval(file_get_contents("file.php"));
Это загрузит, а затем оценит содержимое файла. Файл PHP должен быть полностью сформирован с тегами <?php
и ?>
для eval
, чтобы оценить его.
Теоретически вы могли бы просто использовать fopen, а затем использовать stream_get_contents.
$stream = fopen("file.php","r");
$string = stream_get_contents($stream);
fclose($stream);
, Который должен прочитать весь файл в $string для вас и не должен оценивать его. Хотя я удивлен, что file_get_contents не работал, когда вы указали локальный путь....
В качестве альтернативы вы можете запустить буферизацию вывода, выполнить включение/требование, а затем остановить буферизацию. С помощью ob_get_contents() вы можете просто получить данные, которые были выведены этим другим PHP-файлом, в переменную.
Функция File_get_contents() не будет работать, если на вашем сервере отключен параметр allow_url_fopen. Большинство общих веб-хостингов отключили его по умолчанию из-за угроз безопасности. Кроме того, в PHP6 опция allow_url_fopen больше не будет существовать, и все функции будут действовать так, как если бы она постоянно была отключена. Так что это очень плохой метод для использования.
Лучшим вариантом для использования, если вы получаете доступ к файлу через http, является cURL
Если в вашем файле есть оператор возврата, подобный этому:
<?php return array(
'AF' => 'Afeganistão',
'ZA' => 'África do Sul',
...
'ZW' => 'Zimbabué'
);
Вы можете получить это в такой переменной:
$data = include $filePath;