In PHP file_get_contents 在命令行中工作但在我的 Symfony 项目中不工作

In PHP file_get_contents works in command line but not in my Symfony project

我写了一个小脚本来测试我的项目的一个功能,它工作得很好。

<?php 

$username = 'exportcsv';
$password = 'exportcsv';

$context = \stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " . \base64_encode("$username:$password"),
        'timeout' => 2
    )
));

$content = \file_get_contents('http://theurl', false, $context);

var_dump($content);

url 实际上是一个硬编码的 Symfony 路由,return 我是一个 CSV 文本字符串。

但是当我在控制器上执行相同操作时,我得到:

Warning: file_get_contents(http://myurl): failed to open stream: HTTP request failed! (http://myurl): failed to open stream: HTTP request failed!

每当我使用 file()file_get_contents() 相同的硬编码 url 或生成的绝对路径时:

$url = $this->generateUrl('the_route_name', array(
    'variable' => $variable
), true);

编辑:也许这是一个重要的注意事项,我在公司代理后面,所以我添加了上下文数组 'proxy' => 'http://proxy.mycompany.com:3128' 现在我得到了:failed to open stream: Unable to find the socket transport &quot;http&quot; - did you forget to enable it when you configured PHP?

有或没有 'request_fulluri' => true,'request_fulluri' => false,

相同

我找到了解决办法。我通过 symfony 命令使用 PHP 内置服务器:app/console server:run (bin/console server:run since 2.8+).

所以当 file_get_contents 的上下文无法获取数据时。使用我的 Apache2 网络服务器时一切正常。

我搜索但找不到如何在上下文的 http 数组中设置端口值。

这并没有告诉我为什么它在命令行和单个脚本中工作。