【问题标题】:$s3 - PHP Strict Standards: Only variables should be passed by reference [duplicate]$s3 - PHP 严格标准:只有变量应该通过引用传递[重复]
【发布时间】:2015-04-24 15:39:30
【问题描述】:

这一行:

$source_file = $s3->inputResource(fopen($source, 'rb'), filesize($source));

产生错误: PHP 严格标准:只能通过引用传递变量

我可以抑制错误,但想知道是否有修复。谢谢

【问题讨论】:

  • 你做过研究吗? Thisthis 问题与您的问题同名。他们为什么不解决你的问题?由于您有明确的错误消息,您是否尝试过 Google?

标签: php amazon-s3


【解决方案1】:

我相信你的问题是因为你试图传递一个函数调用的结果,该函数调用没有返回对其参数被定义为接受引用的函数的引用。

这就是manual中所说的:

下面的东西可以通过引用传递:

  • 变量,即 foo($a)
  • 新语句,即 foo(new foobar())
  • 从函数返回的引用

fopen 没有返回引用,因此在将参数传递给接受引用的函数时尝试内联调用它是无效的。试试这个:

$fp = fopen($source, 'rb');
$source_file = $s3->inputResource($fp, filesize($source));

手册将这个示例描述为有效(因为bar() 返回一个引用):

<?php
function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());
?>

这个例子是无效的(这是我认为正在发生的):

<?php
function foo(&$var)
{
    $var++;
}
function bar() // Note the missing &
{
    $a = 5;
    return $a;
}
foo(bar()); // Produces fatal error since PHP 5.0.5

【讨论】:

    猜你喜欢
    • 2014-11-01
    • 2015-05-27
    • 2016-10-05
    • 2014-08-17
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多