file_get_contents () не работает

У меня есть скрипт, который использует file_get_contents() чтобы получить ответ json с удаленного сервера. в то время как file_get_contents() работает правильно на локальных файлах, но не работает с http или https, он дает мне следующую ошибку file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in и file_get_contents(https://api.domain.com/resolve.json?url=blablabla): failed to open stream: no suitable wrapper could be found .. это выделенный сервер, и у меня есть WHM .. Я пробовал

  1. параметр allow_url_fopen = on в редакторе конфигурации WHM PHP, но это не сработало.
  2. создав файл php.ini с allow_url_fopen = on в каталоге, где произошла ошибка, но это не сработало.
  3. добавлено ini_set('allow_url_fopen', 'On'); к началу скрипта PHP, но это не сработало.

Я знаю, что я могу использовать Curl вместо этого, но я хочу знать, почему это не работает. Скрипт работает правильно на другом сервере и localhost

Обновить :

 phpinfo(); 

дает мне

 allow_url_fopen Off allow_url_include Off always_populate_raw_post_data Off 

это означает, что мои изменения php.ini не вступили в силу. Что я делаю неправильно?

Войдите на свой сервер через ssh и введите

 sudo nano /etc/php5/apache2/php.ini //<<<< ubuntu/debian server, might differ for you 

в файле просто нажмите "ctrl + w" и введите "allow_url_fopen" и «Return», скорее всего, вы сначала придете к объяснению, так что повторите поиск пару раз. Теперь вы можете изменить запись из

allow_url_fopen=0

в

allow_url_fopen=1

нажмите "ctrl + x" и подтвердите сохранение файла с помощью "y" .

Затем введите

 sudo service apache2 restart 

Это перезапустит apache, чтобы можно было загрузить новую конфигурацию php.ini. После этих шагов вы сможете использовать file_get_contents извне.


ПРИМЕЧАНИЕ

Если вы не можете найти файл php.ini, вы найдете путь к загруженному файлу php.ini в верхней части вашего phpinfo()

введите описание изображения здесь

Если у вас есть root-доступ, отредактируйте php.ini , обычно находящийся в /etc/php.ini .

Если у вас нет доступа root, попробуйте добавить ini_set('allow_url_fopen', 'On'); или ini_set('allow_url_fopen', '1'); ,

Если вы не видите php.ini , попробуйте использовать phpinfo() в скрипте PHP, чтобы найти местоположение php.ini .

 $url= 'https://example.com'; $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), ); $response = file_get_contents($url, false, stream_context_create($arrContextOptions)); 

Это позволит вам получить содержимое с URL-адреса, является ли это HTTPS, не нужно изменять в php ini.