繁体   English   中英

Laravel 5 Heroku Local不起作用

[英]Laravel 5 Heroku Local doesn't work

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

它可以在线工作。

但是,当我尝试运行“ heroku local”时,我得到:

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

这很有意义,因为查看“供应商/ bin”,所以列出的唯一内容是:

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

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

您应该在composer.json包含这些行

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

添加它们后,请确保运行composer update

经过大量的研究,反复试验并与Heroku支持团队交谈,我发现,尽管Slow Loris的回答是该过程的一部分,但Heroku的支持给了我以下答复:

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

这适用于原始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服务器,并且您不需要外部服务器。 这也使流式上传文件,处理网络>套接字升级等成为可能。 也许在PHP 7中我们很快就会看到类似的东西出现(在PHP 5中根本不可行,因为致命错误会杀死引擎,因此您的Web服务器也将消失)。

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

我确实提出了一个解决方案,使其能够在终端中仅需几行就可以在本地工作。

在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

希望这对某人有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM