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 infile_get_contents(https://api.domain.com/resolve.json?url=blablabla): failed to open stream: no suitable wrapper could be found ..这是一个专用的服务器,我有WHM ..我试过

  1. 在WHM PHPconfiguration编辑器上设置allow_url_fopen = on ,但是这不起作用。
  2. 在发生错误的目录中使用allow_url_fopen = on创build一个php.ini文件,但是这不起作用。
  3. 添加了ini_set('allow_url_fopen', 'On'); 到PHP脚本的开始,但这不起作用。

我知道我可以使用curl,但我想知道为什么这不工作..该脚本正常工作在其他服务器和本地主机

更新:

 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"并返回,最有可能的是你会先解释一下,所以重复搜索几次。 现在你可以改变输入

allow_url_fopen=0

allow_url_fopen=1

"ctrl + x"并用"y"确认文件保存。

然后键入

 sudo service apache2 restart 

这将重新启动Apache,所以新的php.ini配置可以加载。 完成这些步骤后,您应该可以在外部使用file_get_contents


边注

如果你找不到你的php.ini文件,你可以在你的phpinfo()的顶部找到加载的php.ini文件的路径,

在这里输入图像说明

如果您有root权限,请编辑php.ini ,通常位于/etc/php.ini

如果你没有root权限,尝试添加ini_set('allow_url_fopen', 'On');ini_set('allow_url_fopen', '1');

如果您看不到php.ini ,请尝试在PHP脚本中使用phpinfo()来查找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中改变。