2013-03-26 2 views
1

Я не могу включить удаленный PHP-файл в свой PHP-скрипт. вот что я сделал:Включая удаленные файлы в PHP

  1. Набор allow_url_include для on на php.ini.
  2. Добавьте следующие строки в верхней части моего индекса

    $content = file_get_contents('http://domain.com/folder/file.php'); 
    

, но до сих пор не может использовать любую функцию внутри file.php, которая находится в удаленном сервере. ошибка:

PHP Fatal error: Call to undefined function makeConnection() 

Примечание: makeConnection() находится внутри file.php

+0

Вы перезапустили apache после редактирования allow_url_include? Вы установили allow_url_fopen? Кроме того, tp включает файл, используйте include, а не file_get_contents – grunk

+0

, помеченный для дублирования: http://stackoverflow.com/questions/8744156/including-a-remote-php-file-as-a-resource – Luceos

ответ

2

Если вы имеете в виду, что функция «makeConnection()» объявляются во внешнем file.php, то вы не увидите функцию, так как внешний сервер разбора php code NOT отправляет вам необработанный код.

Вам необходимо сохранить внешний file.php примерно на file.txt, чтобы сервер возвращал содержимое без обработки.

Попробуйте и посмотрите, работает ли оно для вас.

Если это так, вы можете планировать что-то более эффективное.

+0

Он работает! Большое спасибо. Можно ли изменить расширение файла на любое, чтобы никто не мог получить к нему доступ? – Shadin

+0

Да, все, что вам нравится. – zaf

-1

Использование eval() функции после загрузки кода:

<? 
$content = file_get_contents('http://domain.com/folder/file.php'); 
eval($content) 
?> 

Но будьте осторожны с включением что-то из другой источник без проверки.

+0

прямо из руководства ** The Конструкция языка eval() очень опасна, поскольку позволяет выполнять произвольный PHP-код. Поэтому его использование не рекомендуется. Если вы тщательно проверили, что нет другого варианта, кроме использования этой конструкции, обратите особое внимание на то, чтобы не передавать какие-либо данные, предоставленные пользователем, без предварительной проверки. ** –

2

file_get_contents и включают в себя не то же самое, file_get_contents просто получает содержимое файла (как это собственное имя говорит), включают в себя выполняет код, который находится в файле ...
Так что вы просто хотите получить содержимое файла или выполнить код с удаленного сервера?

, если вы хотите, чтобы включить его просто

include('http://domain.com/folder/file.php'); 
+0

Функция по-прежнему будет скрыта, поскольку файл.php запускается на сервере. – zaf

+0

arf yes ... он может попытаться получить его через 'ftp: // user: pass @ domain.com/dir/file.php' – Acuao

+0

FTP-имена пользователей и пароли? Решение, но непослушное. – zaf

Смежные вопросы