我已成功将Laravel应用程序部署到Heroku。
它可以在线使用。
但是当我尝试运行" heroku local" 时,我得到了:
vendor / bin / heroku-php-apache2:没有这样的文件或目录
这是有道理的,因为查看" vendor / bin",列出的唯一内容是:
psysh - > ../ PSY / psysh / bin中/ psysh
那么,我的heroku-php-apache在哪里或者如何解决这个问题?
答案 0 :(得分:9)
您应该在composer.json
"require-dev": {
"heroku/heroku-buildpack-php": "*"
}
请务必在添加后运行composer update
。
答案 1 :(得分:4)
经过广泛的研究,试验和错误以及与Heroku支持团队的交谈后,我发现尽管Slow Loris的回答是该过程的一部分,但Heroku的支持给了我以下答案:
简而言之,PHP>应用程序不正式支持heroku local。原因是,与我们在>平台上支持的所有其他语言不同,PHP没有在用户空间中编写的Web服务器。相反,我们将PHP-FPM>与Apache或Nginx一起使用,并且引导脚本(vendor / bin / heroku-(php | hhvm) - (apache2 | nginx))动态地为端口>绑定注入正确的配置FastCGI通信套接字。
这适用于vanilla 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服务器,并且您不需要>外部服务器。这也使得流文件上传,处理web>套接字升级等成为可能。也许在PHP 7中我们会看到类似的东西>很快就会出现(在PHP 5中根本不可行,因为致命错误>杀死了引擎,所以你的web服务器也会消失)。
答案 2 :(得分:1)
我知道这个问题有些陈旧,但是我最近第一次部署了heroku应用,无法为我工作heroku local
。我在Laravel的当前分支是5.8,我也在Windows 10上使用VS Code。我四处搜寻,试图纠正此问题,无论如何都无法使它正常工作。
我确实想出了一个解决方案,使其能够在终端中仅需几行就可以在本地工作。
在VS Code中,我使用gitbash终端,一次在我的heroku项目文件夹composer require laravel/homestead --dev
中,一旦完成,然后我们需要安装宅基vendor/bin/homestead make
,然后一旦完成,就简单地运行vagrant up
,您的应用将可以通过localhost:8000访问。
文档-https://laravel.com/docs/5.8/homestead
希望这对某人有帮助!