簡體   English   中英

為什么Heroku找不到我的autoload.php文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM