亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅部署生成的代碼,沒有 composer.json 文件,并且在“src”目錄中使用“vendor”

僅部署生成的代碼,沒有 composer.json 文件,并且在“src”目錄中使用“vendor”

PHP
慕神8447489 2022-01-24 09:24:16
我在項目的根目錄中有一個包含所有composer.json,phpunit.xml等的項目。所有的.php來源都在src/我已將 composer.json 配置如下:{  "name" : "myproj",  "config" : {    "vendor-dir" : "src/vendor"  },  "autoload" : {    "psr-4" : {      "myclasses\\" : "src/classes"    }  }}這在我的開發機器上運行良好。問題是我只想部署src目錄的內容,這樣我就不會在部署服務器上獲取所有項目元數據。不幸的是,自動加載器會尋找類/var/www/test/vendor/composer/../../../src/classes/而不是例如/var/www/test/vendor/composer/../../classes/PHP 警告:include(): 未能打開 '/var/www/test/vendor/composer/../../../src/classes/myclasses/core/messages/MessageList.php' 以包含(include_path=' .:/usr/share/php') 在 /var/www/test/vendor/composer/ClassLoader.php 第 444 行我可以做一個聰明的配置嗎?還是我被迫移動composer.json(我認為這是生產不需要的元數據)/src?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

它從未在運行時使用的 composer.json 文件。無論如何它沒有用,它只被composer命令使用。如果您不在 composer生產機器上運行,則無需上傳它。


您的項目并沒有失敗,因為“您沒有使用代碼部署 composer.json”,而是因為您正在轉儲具有特定結構的自動加載器,您實際上在配置中提到了該composer.json結構,然后嘗試使用不同的目錄結構運行服務器.


當您運行composer install并且composer dumpautoloader您的項目如下所示:


composer.json

src/ <--- this is where autoloader looks for your files.

--- yourCode/

--- moreCode/

--- vendor/

------ autoloader.php

但是然后在您的服務器上,您在您的服務器上


yourCode/

moreCode/

vendor/

--- autoload.php <--- this can't find the 'src' directory

解決方案不是上傳目錄的內容,src而是上傳src目錄本身。


任何其他需要使用自動加載器的腳本和其余代碼都應該包含在內/var/www/test/src/vendor/autoload.php,并且一切都會正常工作。


如果你不想在src里面有一個目錄test,那么你不應該在自動加載器生成期間擁有它。不要使您的開發和登臺環境與您的生產環境不同。


你唯一的選擇是在你的構建機器上做:


跑 composer install

搬到composer.json_src

更改composer.json因此鍵上聲明的路徑autoload不提及src

跑 composer dumpautoload

刪除 composer.json

上傳src內容。

它不能保證工作并且它是一個脆弱的解決方案,但問題是您試圖以與工具設計背道而馳的方式使用該工具。


查看完整回答
反對 回復 2022-01-24
  • 1 回答
  • 0 關注
  • 645 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號