【问题标题】:Laravel Artisan & imap_open()Laravel 工匠 & imap_open()
【发布时间】:2016-12-06 12:22:32
【问题描述】:

目前遇到一个奇怪的错误或我可能正在监督的事情。 (Laravel 框架)

我有一个普通的 HomeController,我在其中进行了成功的 imap_open() 连接。 (我可以用浏览器读出完整的邮箱)

但是一旦我将此函数传输到一个工匠命令,它就会返回我:

[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to undefined function App\Console\Commands\imap_open()

我错过了什么,或者这根本不可能?

【问题讨论】:

  • 如前所述,App\Console\Commands中缺少该功能,如果您添加正确,请使用代码编辑您的帖子。
  • imap_open() 是 PHP 中的默认函数(在我的安装中启用,因为相同的代码在浏览器中工作):php.net/manual/en/function.imap-open.php

标签: php laravel email imap


【解决方案1】:

你尝试通过Artisan调用它,但是你需要添加一个Artisan函数,因为Artisan不知道你想做什么,请查看文档部分Writing Commands@987654321 @。

现在你正在调用一个未知的 Artisan 函数,这就是你得到这个的原因

【讨论】:

    【解决方案2】:

    您的代码当前位于 App\Console\Command 命名空间中。

    因为你是在没有指定命名空间的情况下调用 imap_open 函数,所以它正在寻找一个 App\Console\Command\imap_open 函数并且找不到。

    因为它是一个默认的php函数,这里的关键是在全局命名空间中使用\

    所以一定要这样称呼它:

     $res = \imap_open(...params);
    

    还要确保为 php cli 编译/启用 imap(因为 cli 的 php.ini 与 web 不同)

    【讨论】:

    • 我确实试过了,但这会导致:[Symfony\Component\Debug\Exception\FatalThrowableError] Call to undefined function imap_open()
    • 控制器在 web 上下文中运行,Artisan 命令在 cli 上下文中运行。两者没有相同的php.ini。你能检查一下 imap 扩展是否为 php-cli 启用了吗?
    • 你有一个快速的解决方法来检查这个吗?
    • 找到php-cli使用的php.ini(取决于你的设置),然后检查扩展行没有被注释掉。
    • 谢谢,我已经通过使用 IMAP 编译 PHP 解决了这个问题:help.directadmin.com/item.php?id=341
    猜你喜欢
    • 2021-06-12
    • 2014-03-19
    • 2016-07-08
    • 2013-05-31
    • 2016-08-31
    • 2016-06-16
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多