[英]Why can't Heroku find my autoload.php file?
我正在Heroku上為Wordpress插件設置一個演示站點。 我的插件使用composer來管理依賴項,它在我的本地安裝上配置為git子模塊。 我推送到heroku,一切似乎都有效。 我使用heroku run bash
ssh進入應用程序並從我的插件中手動運行composer install
。 然后我登錄該網站並嘗試激活我的插件...但我收到以下錯誤:
Plugin could not be activated because it triggered a fatal error.
Warning: require_once(/app/wp-content/plugins/wp-github-pipeline/vendor/autoload.php): failed to open stream: No such file or directory in /app/wp-content/plugins/wp-github-pipeline/wp-github-pipeline.php on line 23 Fatal error: require_once(): Failed opening required '/app/wp-content/plugins/wp-github-pipeline/vendor/autoload.php' (include_path='.:/app/.heroku/php/lib/php') in /app/wp-content/plugins/wp-github-pipeline/wp-github-pipeline.php on line 23
我不明白。 使用heroku run bash
我可以看到該文件實際上存在。 我在本地或其他遠程服務器上沒有遇到此問題。 為什么會在這里發生?
我不能肯定地說為什么這樣可行但是看起來Heroku並沒有真正與composer.json在項目根目錄之外的某個地方很好地協作。 所以我拿了我的項目的composer.json並將它移動到項目根目錄,然后我添加了......
"config": {
"vendor-dir": "wp-content/plugins/wp-github-pipeline/vendor"
}
...導致我需要的依賴(和autoload.php)安裝在原始位置。
有了這個,我能夠毫無問題地推送到Heroku。
我不知道為什么我能夠在沒有它工作的情況下手動運行composer install
。 我也不知道為什么heroku run bash
會顯示我實際上並不存在的文件。
據我說,你必須重新生成自動加載。 希望你在composer.json中為autoloads編寫代碼。
composer dump-autoload
這將重新生成您的自動加載,它將解決您的問題。 如果沒有,請通過粘貼composer.json來修改您的問題。
我解決這個問題的方法是在我的.user.ini
文件中添加一個include_path
。 該ini文件需要位於文檔根目錄中 ,而不是應用程序的根目錄中。
include_path =“。:/ app / .heroku / php / lib / php:/ app / vendor /”
不要逐字復制我的include_path
示例,因為它現在可能是您的應用所需的包含路徑。 從Heroku的錯誤日志中獲取您當前的包含路徑,然后將:/app/vendor
附加到它。
重要的是添加/app/vendor/
到include_path。 這將指向你的require
php語句到Heroku放置autoload.php
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.