我正在尝试执行:
heroku run ./php/bin/php www/scheduled.php
但我收到错误:
PHP Fatal error: Class 'mysqli' not found in /app/www/scheduled.php on line 17
mysqli 在直接在浏览器中访问页面时起作用。
我已按照以下说明设置了 Heroku 应用程序:https://gist.github.com/danielepolencic/6983030
建议在根目录添加一个包含以下内容的 php.ini 文件:
extension_dir = "/app/www/ext/"
extension=mysqli.so
也许这个文件不在调度程序中?
我应该怎么做才能解决我的问题?
谢谢
最佳答案
您不再需要任何这些自定义说明。 Heroku 几个月前就已经提供了新的、重建的 PHP 支持版本。运行 heroku config:unset BUILDPACK_URL
以停止使用多重包并获取最新版本。
删除 Procfile
、php.ini
、ext/
文件夹和 .buildpacks
。
接下来,创建一个 composer.json
以启用 ext/gettext
(ext/mysqli
默认情况下处于启用状态):
{
"require": {
"ext-gettext": "*"
}
}
那么你应该可以开始了。要运行计划的进程,只需执行 heroku run php Scheduled.php
(应用程序内容在推送时不再移动到 www/
子目录)。
参见https://devcenter.heroku.com/categories/php对于所有文档;具体来说,https://devcenter.heroku.com/articles/php-support关于扩展、版本等。
关于在 Heroku Scheduler 中找不到 mysqli(但可以在网站上使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25298693/