【问题标题】:Call to undefined function readline()?调用未定义的函数 readline()?
【发布时间】:2014-04-23 08:04:28
【问题描述】:

我正在将 Dropbox 集成到我的基于 PHP 的网站中。当我尝试运行以下代码时。我得到了这个致命错误:在最后一行调用未定义函数 readline()

require_once "dropbox-sdk/Dropbox/autoload.php";
use \Dropbox as dbx;
$appInfo = dbx\AppInfo::loadFromJsonFile("app-info.json");

echo "<pre>";
print_r($appInfo);
echo "</pre>";

$webAuth = new dbx\WebAuthNoRedirect($appInfo, "PHP-Example/1.0");

echo "<pre>";
print_r($webAuth);
echo "</pre>";

$authorizeUrl = $webAuth->start();
echo "1. Go to: " . $authorizeUrl . "\n<br>";
echo "2. Click \"Allow\" (you might have to log in first).\n<br>";
echo "3. Copy the authorization code.\n<br>";
$authCode = \trim(\readline("Enter the authorization code here: "));

我已经通过不同的论坛,人们说它可以在命令行中工作,但我不明白如何?有什么想法吗?

【问题讨论】:

    标签: php readline dropbox-php


    【解决方案1】:

    或者只是用它来模拟它

    if(!function_exists("readline")) {
        function readline($prompt = null){
            if($prompt){
                echo $prompt;
            }
            $fp = fopen("php://stdin","r");
            $line = rtrim(fgets($fp, 1024));
            return $line;
        }
    }
    

    【讨论】:

    • 这是最奇怪的事情,但感谢您的解决方法
    • 为了获得最佳支持,您应该使用if(!function_exists("readline")) 来避免烦人的重新定义错误
    • 一点注意,可以将fopen("php://stdin", "r")替换为STDIN PHP常量,定义方式相同。
    【解决方案2】:

    刚刚在 Ubuntu 上遇到了这个问题。

    找到这个答案:https://askubuntu.com/a/264329/166

    这种情况下的解决方案是安装包php5-readline

    【讨论】:

      【解决方案3】:

      readline() 用于在命令行上运行,而不是通过网络浏览器。

      要检查您的服务器上是否安装了它,请输入:

      php -i | grep Configure
      

      您可能还没有安装它,您应该自己编译它或询问您的主机管理员是否允许这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        • 2013-10-30
        • 2015-02-11
        • 2016-11-12
        相关资源
        最近更新 更多