【问题标题】:Laravel 5 Heroku Local doesn't workLaravel 5 Heroku Local 不起作用
【发布时间】:2016-01-06 00:53:37
【问题描述】:

我已成功将 Laravel 应用程序部署到 Heroku。

它可以在线工作。

但是当我尝试运行 "heroku local" 我得到:

vendor/bin/heroku-php-apache2: 没有这样的文件或目录

这是有道理的,因为查看“供应商/bin”,列出的唯一内容是:

psysh -> ../psy/psysh/bin/psysh

那么,我的 heroku-php-apache 在哪里或者我该如何解决这个问题?

【问题讨论】:

    标签: php apache laravel heroku laravel-5


    【解决方案1】:

    您的composer.json 中应该有这些行

    "require-dev": {
        "heroku/heroku-buildpack-php": "*"
     }
    

    确保在添加它们后运行composer update

    【讨论】:

    • 谢谢。我很想给你投票,但我的名声不允许。这是在其他地方提到的吗?这是非常基本的东西,但我没有在 Herokus 文档中找到它(例如)。
    • 来源:Heroku DevCenter 如果你安装了 composer,你也可以composer require --dev "heroku/heroku-buildpack-php:*"
    【解决方案2】:

    经过广泛的研究、反复试验并与 Heroku 支持团队交谈后,我发现虽然 Slow Loris 的回答是过程的一部分,但 Heroku 的支持给了我以下答案:

    长话短说,PHP 应用程序并未正式支持 heroku local。原因是,与我们在 >platform 上支持的所有其他语言不同,PHP 没有用用户空间编写的 Web 服务器。相反,我们将 PHP-FPM > 与 Apache 或 Nginx 一起使用,并且引导脚本 (vendor/bin/heroku-(php|hhvm)-(apache2|nginx)) 为端口 >binding 和 FastCGI 通信动态注入正确的配置插座。

    这适用于原生 PHP 和 Apache 构建,前提是:

    1)当前用户拥有所有正确的权限(在您的情况下, >/var/log/apache2/ 不可写); 2) 在主 httpd.conf 中加载了正确的代理模块; 3) 主 httpd.conf 根本没有绑定到一个端口,或者至少没有绑定到 > 1024 以下的端口(为超级用户保留)。

    主配置也需要由每个用户自己处理,因为>有时,要加载的模块在 libexec/ 中,有时在 >lib/apache2/modules/ 中,等等。变化太多了;否则,我们可以>向用户发送完整的 Apache 配置,体验会更好。

    但问题还不止于此。 FPM 在 Windows 上根本不起作用,在大多数 Linux 系统上,httpd 不是一个有效的命令;相反,apache2ctl > 处理启动和停止,因此,在前台运行服务器是不可能的。最后,>系统配置中有太多可能的排列方式,无法确保每个用户都有良好的>体验。

    这只是 PHP 领域的当前现实。 Ruby、Python、Node、Java 都有以各自语言编写的 >web 服务器,您不需要 >external 服务器。这也使得流式文件上传、处理 web >socket 升级等成为可能。也许在 PHP 7 中我们很快就会看到类似的东西 >emerge(在 PHP 5 中根本不可行,因为致命错误 > 杀死引擎,所以你的 Web 服务器也会消失)。

    【讨论】:

    • 回来是因为答案未被接受,没有失望。我想你能做的最好的事情就是运行一个网络服务器并用老式的方式来做
    【解决方案3】:

    我知道这个问题有点过时,但我最近第一次部署了一个 heroku 应用程序,但无法让 heroku local 为我工作。我在 Laravel 的当前分支 5.8 上,我也在使用 VS Code 的 Windows 10 上。我到处搜索试图纠正这个问题,但无论如何都无法让它工作。

    我确实想出了一个解决方案,可以在终端中只用几行就可以在本地处理这个问题。

    在VS Code中,我使用了gitbash终端,在我的heroku项目文件夹composer require laravel/homestead --dev中,一旦完成,然后我们需要安装homestead,vendor/bin/homestead make,然后一旦完成,只需运行vagrant up并且您的应用程序将可以通过 localhost:8000 访问。

    文档 - https://laravel.com/docs/5.8/homestead

    希望这对某人有所帮助!

    【讨论】:

    • 这太好了,非常感谢!!!!和我的一个朋友花了两个小时,我自己也弄不明白。
    猜你喜欢
    • 2016-11-24
    • 2016-01-30
    • 2015-08-02
    • 2017-07-15
    • 2016-05-04
    • 2015-06-03
    • 2016-07-03
    • 2015-09-30
    相关资源
    最近更新 更多