更改Heroku PHP应用程序的文档根目录

3
我正在创建一个Yii 2应用程序并在Heroku上使用它。
该应用程序的文档根目录应该是web/文件夹。
我尝试过以下步骤:
1. 在应用程序的根目录中创建Procfile文件。 2. 在config文件夹中创建web-boot.sh。 3. 在config文件夹中创建httpd文件夹,并在其中创建default.conf。
以下是web-boot.sh文件的内容:
echo "Include /app/www/config/httpd/*.conf" >> /app/apache/conf/httpd.conf touch /app/apache/logs/error_log touch /app/apache/logs/access_log tail -F /app/apache/logs/error_log & tail -F /app/apache/logs/access_log & export LD_LIBRARY_PATH=/app/php/ext export PHP_INI_SCAN_DIR=/app/www echo "Launching apache" exec /app/apache/bin/httpd -DNO_DETACH
以下是default.conf文件的内容:
DocumentRoot "/app/www/web" Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all 当我部署应用程序时,出现了错误。错误日志如下所示:
2014-07-12T20:23:08.476411+00:00 heroku[web.1]: State changed from starting to crashed 2014-07-12T20:23:06.313554+00:00 heroku[web.1]: Starting process with command `sh www/config/web-boot.sh` 2014-07-12T20:23:08.465571+00:00 heroku[web.1]: Process exited with status 2 2014-07-12T20:23:10.025168+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=richy-rich.herokuapp.com request_id=e4bb1124-5f2d-4a27-8df4-6fff9bc166b2 fwd="50.19.158.232" dyno= connect= service= status=503 bytes= 2014-07-12T20:41:49.308914+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=richy-rich.herokuapp.com request_id=5785ac83-c4fb-473e-b794-50ce491512c9 fwd="223.255.224.107" dyno= connect= service= status=503 bytes=
如果您是应用程序所有者,请查看日志以获取详细信息。
现在我尝试了另一种解决方案,我将这个包添加到我的composer.json文件中:
heroku/heroku-buildpack-php
并将Procfile更改为:
web: vendor/bin/heroku-php-nginx web/
这次我得到了这个错误:
2014-07-12T21:12:58.960392+00:00 app[web.1]: This program requires PHP 5.5.11 or newer; check your 'php' command.
2014-07-12T21:13:00.147518+00:00 heroku[web.1]: State changed from starting to crashed
2014-07-12T21:12:58.044158+00:00 heroku[web.1]: Starting process with command `vendor/bin/heroku-php-apache2 web/`
2014-07-12T21:13:00.136787+00:00 heroku[web.1]: Process exited with status 1
2014-07-12T21:13:08.648874+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=richy-rich.herokuapp.com request_id=a3bcc52d-2a7c-45ac-b21d-f856154d7e38 fwd="223.255.224.107" dyno= connect= service= status=503 bytes=
看起来这是因为我的PHP版本问题,由于Heroku安装的版本是5.5.10,所以我尝试将composer php版本更新为">=5.5.11",但我又遇到了另一个错误(天啊,这已经是凌晨4点39分了,我还没有因为所有这些错误而睡觉)。
问题1 - 找不到任何版本的所请求的php包,可能是包名称有误。
问题2 - 找不到任何版本的所请求的php包,可能是包名称有误。
问题3 - 安装请求cebe/markdown 0.9.x-dev -> 可以通过cebe/markdown[0.9.x-dev]满足。 - cebe/markdown 0.9.x-dev需要php >=5.4.0 -> 找不到匹配的包。
问题4 - 安装请求ezyang/htmlpurifier v4.6.0 -> 可以通过ezyang/htmlpurifier[v4.6.0]满足。 - ezyang/htmlpurifier v4.6.0需要php >=5.2 -> 找不到匹配的包。
问题5 - 安装请求swiftmailer/swiftmailer 5.2.x-dev -> 可以通过swiftmailer/swiftmailer[5.2.x-dev]满足。 - swiftmailer/swiftmailer 5.2.x-dev需要php >=5.2.4 -> 找不到匹配的包。
问题6 - 安装请求swiftmailer/swiftmailer dev-master -> 可以通过swiftmailer/swiftmailer[dev-master]满足。 - swiftmailer/swiftmailer dev-master需要php >=5.2.4 -> 找不到匹配的包。
问题7 - 安装请求yiisoft/yii2 2.0.0-beta -> 可以通过yiisoft/yii2[2.0.0-beta]满足。 - yiisoft/yii2 2.0.0-beta需要php >=5.4.0 -> 找不到匹配的包。
问题8 - yiisoft/yii2 2.0.0-beta需要php >=5.4.0 -> 找不到匹配的包。 - yiisoft/yii2-swiftmailer 2.0.0-beta需要yiisoft/yii2 * -> 可以通过yiisoft/yii2[2.0.0-beta]满足。 - 安装请求yiisoft/yii2-swiftmailer 2.0.0-beta -> 可以通过yiisoft/yii2-swiftmailer[2.0.0-beta]满足。
1个回答

1

看起来您没有使用官方的构建包,而是使用了某种第三方构建包(检查heroku config并查找BUILDPACK_URL)。

与维护者解决此问题,或者更好地使用Heroku的官方PHP支持(heroku config:unset BUILDPACK_URL并推送更改)。然后您的Procfile将起作用(但您需要在composer.json中删除heroku/heroku-buildpack-php依赖项,或将其移动到require-dev中)。


谢谢您的建议,我已经阅读了在Heroku中默认安装它,所以我不需要安装它。但由于Heroku中安装的PHP版本,仍然无法运行Procfile。 - user3833083
请重新阅读我写的内容。你显然没有运行常规的构建包。如果在你的应用程序中运行 heroku configBUILDPACK_URL 的值是什么? - dzuelke
官方的构建包带有PHP 5.5.11-5.5.14,因此它永远不会在启动时显示“此程序需要PHP 5.5.11或更高版本,请检查您的'php'命令。”,并且它将拒绝使用heroku/heroku-buildpack-php作为非开发依赖项的推送。您几乎肯定正在运行具有不同PHP版本和不同行为的第三方构建包。您不能在那里使用官方构建包的引导命令,因为它完全不同。 - dzuelke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接