У меня есть несколько функций в моем приложении php, которые ретранслируют по вызовам file_get_contents (), file_put_contents и getimagesize ().
Проблема в том, что когда allow_url_fopen allow_url_include отключены в php.ini, я получаю ошибки в этих критических функциях.
Предупреждение: getimagesize () [function.getimagesize]: доступ к URL-файлу отключен в конфигурации сервера в /home/content/…/html/_sites/mysite/wp-content/themes/mytheme/functions.php on line 2534
Каковы варианты решения этих проблем?
EDIT : Это все локальные файлы на том же веб-сервере, что и вызывающий php-скрипт. Есть ли предпочтительный метод для чтения / записи содержимого файла?
Вы можете использовать завиток для получения удаленных страниц. Вы можете сохранить результаты запроса curl к переменной и echo () вместо использования оболочки url для извлечения содержимого.
Теоретически вы можете также eval () вернуть данные. Но запуск удаленного кода PHP – это угроза безопасности ENORMOUS, любой PHP-код, включенный таким образом, может буквально сделать все, что вы можете. НЕ ДЕЛАЙТЕ ЭТО! То же самое происходит и для allow_url_include
Если у вас есть доступ к вашему веб-серверу, вам может потребоваться найти файл php.ini, например:
/etc/php5/apache/php.ini
И используйте следующие параметры:
; http://php.net/allow-url-fopen allow_url_fopen = On ; http://php.net/allow-url-include allow_url_include = Off
Если вы используете учетную запись хостинга, эти параметры могут быть интерактивно доступны на панели управления.
Второе решение может заключаться в использовании cURL. Я предполагаю, что вы пытались вызвать getimagesize с URL-адресом. Документация здесь: http://php.net/manual/en/book.curl.php
$ch = curl_init('http://example.com/image.php'); $fp = fopen('/my/folder/flower.gif', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp);