【问题标题】:PHP: file_get_contents does not work inside of a functionPHP:file_get_contents 在函数内部不起作用
【发布时间】:2013-06-15 00:25:29
【问题描述】:

PHP 的file_get_contents 在不在函数内部时可以正常工作。但是,在将其移动到一个函数并在没有任何其他更改的情况下调用该函数后,代码将停止工作。

这(在函数之外)有效...

$cpuser = 'exampl';
$cppass = 'PASSWORD';
$cpdomain = 'example.com';
$cpskin = 'darnkids';
$emailname = 'darnkids';
$emaildomain = 'example.com';
$password = 'PASSWORD';
$quota = '0';

$result1 = file_get_contents("https://$cpuser:$cppass@$cpdomain:2083/frontend/$cpskin/mail/doaddpop.html?email=$emailname&domain=$emaildomain&password=$password&quota=$quota");
echo $result1;

同样的代码(函数内部)不起作用...

$cpuser = 'exampl';
$cppass = 'PASSWORD';
$cpdomain = 'example.com';
$cpskin = 'darnkids';
$emailname = 'darnkids';
$emaildomain = 'example.com';
$password = 'PASSWORD';
$quota = '0';

function account_create()
{
 $result1 = file_get_contents("https://$cpuser:$cppass@$cpdomain:2083/frontend/$cpskin/mail/doaddpop.html?email=$emailname&domain=$emaildomain&password=$password&quota=$quota");
 echo $result1;
}

account_create();

无论响应是什么,我都需要能够捕获响应。为什么file_get_contents 在函数内部不工作,如何让它在函数内部工作?

【问题讨论】:

    标签: php file-get-contents


    【解决方案1】:

    这与file_get_contents() 无关。该函数的范围内没有这些全局变量。

    您需要使用 global 关键字或 $GLOBALS 数组使它们可用,或者更好的是,将它们限定为您的函数。

    【讨论】:

    • Derp,真不敢相信我做到了。谢谢,限制解除后接受。
    【解决方案2】:

    当您将对 file_get_contents 的调用移动到函数中时,您用于定义文件名的变量是本地版本,它们未在您的函数中定义。要么将变量移动到函数中,然后将它们作为参数传递。

    【讨论】:

      【解决方案3】:

      正如@Alex 上面所说,全局变量不可用。如果您不想定义全局变量(无论出于何种原因),只需确保您的函数将所有数据包含在您的第一个 sn-p 中。像这样的东西。

      function account_create(){
      $cpuser = 'exampl';
      $cppass = 'PASSWORD';
      $cpdomain = 'example.com';
      $cpskin = 'darnkids';
      $emailname = 'darnkids';
      $emaildomain = 'example.com';
      $password = 'PASSWORD';
      $quota = '0';
      $result1 = file_get_contents("https://$cpuser:$cppass@$cpdomain:2083/frontend/$cpskin/mail/doaddpop.html?email=$emailname&domain=$emaildomain&password=$password&quota=$quota");
       echo $result1;
      }
      
      account_create();
      

      如果这不适用于您的用例,您可以随时将部分或全部数据传递给函数。比如……

      function account_create($cp_user, $cppass){
          ...
      }
      
      account_create('example1', 'PASSWORD');
      

      您可以使用很多选项。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多