【发布时间】:2023-04-07 10:25:01
【问题描述】:
如果我有这样的目录结构:
/
/libraries/
/other-nonpublic-stuff/
/webroot/
如何将 /webroot/ 设置为 document_root,以便仅在我的 herokuapp 的 URL 下提供它的内容?
我认为Procfile 可能是实现这一目标的方法,但它并没有真正记录在案。
已经尝试过类似
web: php webroot/
或
web: sh boot.sh webroot/
或
web: sh webroot/
在Procfile,但我总是以Heroku push rejected, no Cedar-supported app detected结束
当我在根目录中推送带有“index.php”的存储库时,它工作正常,heroku ps 只显示一个运行“boot.sh”的 Web 进程,但即便如此,Procfile 显然被忽略了,heroku提供“/”而不是“/webroot”。所以并没有真正暗示我如何设置我的Procfile:
Process State Command
------- --------- ----------
web.1 up for 2h sh boot.sh
我通过heroku run bash 登录到我的“实例”控制台并执行了cat boot.sh。它包含以下内容:
sed -i 's/Listen 80/Listen '$PORT'/' /app/apache/conf/httpd.conf
for var in `env|cut -f1 -d=`; do
echo "PassEnv $var" >> /app/apache/conf/httpd.conf;
done
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
所以Heroku push rejected, no Cedar-supported app detected 错误的问题(当“/”中没有.php 文件时,显然可以通过将PHP_INI_SCAN_DIR 更改为“/app/www/webroot”来解决,但那是a)不可能和b)不会解决使用“/webroot”作为文档根的问题。为了解决这个问题,我还必须修改“/app/apache/conf/httpd.conf”。
有什么建议吗? :)
谢谢, 乔什
【问题讨论】:
-
我认为 Heroku 不适用于 php。我错了吗?
-
他们在 cedar 堆栈上一直默默支持 php。因为他们正在与 Facebook 合作。我想我可能会使用 Procfile 来做到这一点,但是没有专门针对 php 记录该用法。
-
甚至没有那么沉默。 PHP 在这里声明:devcenter.heroku.com/articles/facebook
-
看起来 Procfile 被 php 应用程序完全忽略了。 :-(
-
他们也默默支持 Common Lisp 吗?