Обходной путь для отключенных функций php.ini ---

Мы используем виртуальный хостинг, и следующие функции отключены.

file_uploads = Off
allow_url_fopen = Off
allow_url_include = Off

Мы не можем изменить хостинг и должны найти некоторые обходные пути. Хостинговая компания также не может/не желает включать эти функции.

Например: мы вызываем 1 сервер с другого, чтобы получить контент. Итак, мы делаем включение, но поскольку включение URL-файла отключено, мы не уверены, какие параметры у нас есть, чтобы получить контент на этом втором сервере и сохранить его там, используя какой-то кеш.

Мы полностью контролируем сервер контента (выделенный), поэтому мы можем делать все необходимое, просто не зная, есть ли какое-то простое решение проблемы.


person Community    schedule 24.11.2008    source источник


Ответы (4)


Поскольку вы хотите получить удаленный контент, самым простым способом будет написать функциональность для самостоятельной загрузки контента с помощью чего-то вроде curl (php.net/curl)

person Community    schedule 24.11.2008
comment
Мы думали об использовании curl для захвата контента с сервера контента, но как нам кэшировать его в общий ящик? Наш обычный метод будет таким: $artciel=file_get_contents(cache.php?topic&type=m); который cache.php делает file_get_contents(CONTENTSERVER.php?ga.php?topic=&type= - person ; 24.11.2008

Вы пробовали что-то вроде этого: http://www.humanumbrella.com/2007/12/08/how-to-download-a-remote-file-in-php-and-then-save-it/

person Dar    schedule 24.11.2008

Это зависит от того, насколько заблокирован сервер. Приведенные примеры (с использованием функций curl или fsockopen) не должны быть ограничены упомянутыми вами ограничениями.

person Lasar    schedule 24.11.2008

Вы можете решить свою проблему так

а) Создать механизм на выделенном сервере для извлечения любого файла (плюс какая-то аутентификация на основе ключа и ограничения на пути, по которым файлы могут быть извлечены)

например: URL-адрес с надписью get_file?path=/path/to/file&key=security_key

б) Напишите функцию для получения этого, как если бы из локального файла

function fetch_file($path) {
    $ch = curl_init("http://www.example.com/get_file?path=$path&key=security_key");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

Затем вы можете оценить возвращаемую строку, и это будет похоже на включение файла

eval fetch_file($path);

Другое решение для записи на сервер, если загрузка php-файла запрещена, - это передать файл по ftp на ваш сервер и включить файл.

person anoopjohn    schedule 23.10.2013