Итак, я использую file_get_contents для запроса файла через плагин для Wordpress, который я распространяю другим пользователям.PHP include vs file_get_contents
В любом случае, изначально, что я делал, проверяли, разрешен ли пользователь allow_url_fopen и если это происходит прямо для file_get_contents. Если нет, я затем проверял, разрешен ли пользователь cURL, и если да, возьмите этот маршрут. Код ниже:
if (ini_get('allow_url_fopen') == 1) {
$content = file_get_contents($file);
return $content;
}
elseif (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, riva_slider_pro_dir(true) . $file);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($curl);
curl_close($curl);
return $content;
}
Однако, вот проблема, с которой я столкнулся. Определенный пользовательский хост заблокировал функцию file_get_contents от доступа к файлам в целом, оставив allow_url_fopen включенным. Ничто не будет работать, относительные пути, абсолютные пути, ничего. Поэтому я обратился к другому решению, и выяснить, что это сработало:
ob_start();
include $file;
$content = ob_get_contents();
ob_end_clean();
Мой вопрос, насколько надежен этот метод? При этом я использую локальный путь, например «admin/file.css» и т. Д.
Если я решил заменить верхний код на это, какая установка хостинга может помешать работе? Использование этого метода не дает мне возможности проверить, что-то пошло не так.
Что вы пытаетесь достичь? Если экземпляр PHP, на котором запущен ваш код, не разрешает allow_url_fopen, вы должны это уважать, а не пытаться обойти его. Если этому препятствует работа вашего кода, вы должны просто отключить свой код до тех пор, пока не будет установлена требуемая конфигурация. – FrozenFire
Плагин пытается получить содержимое файла CSS. Затем он модифицирует его и создает новый отдельный файл CSS. Различные свойства CSS устанавливаются через панель администратора. Кроме того, файлы, к которым осуществляется доступ, находятся в том же каталоге, что и сам плагин. Стилирование применяется к слайд-шоу jQuery. Без стилизации он не будет функционировать. –
Не следует пытаться извлечь файл, который хранится в дереве приложений через HTTP. Он доступен локально, поэтому allow_url_fopen не имеет значения. Используя HTTP для извлечения содержимого файла, вы добавляете большой объем накладных расходов и делаете весь процесс ошибкой. – FrozenFire