【问题标题】:Change Document Root For Heroku PHP Application更改 Heroku PHP 应用程序的文档根目录
【发布时间】:2025-12-09 15:35:01
【问题描述】:

我正在创建一个 Yii 2 应用程序并在 Heroku 上试用它

文档根目录应该是该应用程序的 web/ 文件夹

这是我尝试过的:

  • 在该应用程序的根目录中创建一个 Procfile
web: sh www/config/web-boot.sh
  • 在配置文件夹中创建 web-boot.sh
echo "包括 /app/www/config/httpd/*.conf" >> /app/apache/conf/httpd.conf 触摸 /app/apache/logs/error_log 触摸 /app/apache/logs/access_log tail -F /app/apache/logs/error_log & 尾 -F /app/apache/logs/access_log & 导出 LD_LIBRARY_PATH=/app/php/ext 导出 PHP_INI_SCAN_DIR=/app/www 回声“启动阿帕奇” 执行 /app/apache/bin/httpd -DNO_DETACH
  • 从 config 文件夹中,我创建“httpd”文件夹,并在该文件夹中创建“default.conf”
DocumentRoot "/app/www/web" 选项索引 FollowSymLinks 允许覆盖所有 命令允许,拒绝 允许所有人 目录>

当我部署应用程序时,我收到此错误:

应用程序发生错误,无法提供您的页面。请稍后重试。 如果您是应用程序所有者,请查看您的日志以获取详细信息。

当我检查日志时:

2014-07-12T20:23:08.476411+00:00 heroku[web.1]:状态从开始变为崩溃 2014-07-12T20:23:06.313554+00:00 heroku[web.1]:使用命令“sh www/config/web-boot.sh”启动进程 2014-07-12T20:23:08.465571+00:00 heroku[web.1]:进程以状态 2 退出 2014-07-12T20:23:10.025168+00:00 heroku[路由器]: 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" 测功机=连接=服务=状态=503字节= 2014-07-12T20:41:49.308914+00:00 heroku[路由器]: 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" 测功机=连接=服务=状态=503字节=

如何解决这个问题? 我根本不明白 Procfile,谢谢

更新

现在我尝试了另一种解决方案,我将此包添加到我的 composer.json 中

heroku/heroku-buildpack-php

并将Procfile更改为:

web: 供应商/bin/heroku-php-nginx web/

这次我得到了这个错误:

2014-07-12T21:12:58.960392+00:00 app[web.1]:此程序需要 PHP 5.5.11 或更新版本;检查你的'php'命令。
2014-07-12T21:13:00.147518+00:00 heroku[web.1]:状态从开始变为崩溃
2014-07-12T21:12:58.044158+00:00 heroku[web.1]:使用命令`vendor/bin/heroku-php-apache2 web/`启动进程
2014-07-12T21:13:00.136787+00:00 heroku[web.1]:进程以状态 1 退出
2014-07-12T21:13:08.648874+00:00 heroku[路由器]: 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] 可满足。

请帮帮我,谢谢

【问题讨论】:

    标签: php heroku yii2


    【解决方案1】:

    看起来您使用的不是官方 buildpack,而是某种第三方的(检查 heroku config 并查找 BUILDPACK_URL)。

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

    【讨论】:

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