回答
是的。有一個解決方案。但它可能需要一些服務器配置... 和其中一些由於安全風險被默認禁止!
下載composer.phar
https://getcomposer.org/download/ - 這是PHP存檔,可以通過Phar()
提取並作爲常規庫執行。
創建新的php文件並將其放置到Web公共文件夾中。即/public/composer.php
或下載在https://github.com/whipsterCZ/laravel-libraries/blob/master/public/composer.php
配置
<?php
//TODO! Some Authorization - Whitelisted IP, Security tokens...
echo '<pre>
______
/____/___ ____ ___ ____ ____ ________ _____
// /__ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
//___/ /_/////// /_///_/ (__ ) __//
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ UPDATE
/_/
';
define('ROOT_DIR',realpath('../'));
define('EXTRACT_DIRECTORY', ROOT_DIR. '/composer');
define('HOME_DIRECTORY', ROOT_DIR. '/composer/home');
define('COMPOSER_INITED', file_exists(ROOT_DIR.'/vendor'));
set_time_limit(100);
ini_set('memory_limit',-1);
if (!getenv('HOME') && !getenv('COMPOSER_HOME')) {
putenv("COMPOSER_HOME=".HOME_DIRECTORY);
}
提取作曲家庫
if (file_exists(EXTRACT_DIRECTORY.'/vendor/autoload.php') == true) {
echo "Extracted autoload already exists. Skipping phar extraction as presumably it's already extracted.\n";
}
else{
$composerPhar = new Phar("../composer.phar");
//php.ini set phar.readonly=0
$composerPhar->extractTo(EXTRACT_DIRECTORY);
}
運行作曲指揮
// change directory to root
chdir(ROOT_DIR);
//This requires the phar to have been extracted successfully.
require_once (EXTRACT_DIRECTORY.'/vendor/autoload.php');
//Use the Composer classes
use Composer\Console\Application;
use Composer\Command\UpdateCommand;
use Symfony\Component\Console\Input\ArrayInput;
//Create the commands
$args = array('command' => 'update');
if(!COMPOSER_INITED) {
echo "This is first composer run: --no-scripts option is applies\n";
$args['--no-scripts']=true; }
}
$input = new ArrayInput($args);
//Create the application and run it with the commands
$application = new Application();
$application->setAutoExit(false);
$application->setCatchExceptions(false);
try {
//Running commdand php.ini allow_url_fopen=1 && proc_open() function available
$application->run($input);
echo 'Success';
} catch (\Exception $e) {
echo 'Error: '.$e->getMessage()."\n";
}
但更好地將根據composer.lock這是從本地環境中測試最後的依賴配置來執行composer install
,
唯一的變化是
$args = array('command' => 'install');
這樣可以嗎? – WhipsterCZ
這是一個更好的:) – Epodax
你也可以這樣做: 1)下載最新的composer.phar 2)執行PHP腳本中的命令,使用下載的作曲文件執行操作
這是一個臨時解決方案,但可以滿足眼前的需求。
這可能是一個壞主意,但請解釋原因。不要只是投下來。 – MilanG
最好的辦法是不要在生產服務器上運行Composer命令,但在其外部運行。有一個部署腳本 - 無論如何你的代碼必須放在服務器上,如果你在上傳代碼之後或上傳之前在服務器上添加了依賴關係,那應該沒有關係。
工作流程將如下所示:有一臺本地機器,從回購庫檢出代碼,運行composer install
,然後將所有內容上傳到服務器。這聽起來像一個四行的腳本,對我說:
git archive master | tar -x -C /deploy/application
pushd /deploy/application && composer install
popd
scp /deploy/application [email protected]:/srv/www/htdocs
是的,你需要一些錯誤的東西的情況下處理出錯,從部署非工作網站停止腳本。此外,使用rsync
優化上傳將是一個建議。
- 1. PHP Composer - 從遠程服務器更新?
- 2. 如何在測試/生產服務器上運行「composer update」?
- 3. 如何在服務器上運行更新查詢?
- 4. php沒有在服務器上運行
- 5. 在php服務器上運行activex dll
- 6. 在asp.net服務器上運行PHP
- 7. 如何在服務器上運行JavaScript
- 8. 如何在服務器上運行Dart?
- 9. 如何運行在服務器上
- 10. 如何在php 5.5服務器上運行php 5.4代碼或更早版本
- 11. 如何運行更新appwidget的服務?
- 12. 如何在生產服務器上運行Yard服務器?
- 13. 如何更新正在運行的Node.js服務器?
- 14. 如何在服務器上連續運行一個php程序?
- 15. 如何在Windows主機服務器上運行.php文件
- 16. 如何在tomcat 7服務器上運行php(CentOS)
- 17. 如何在ASP運行服務器上重定向PHP URL?
- 18. 如何在遠程服務器上運行php腳本?
- 19. 如何在我的服務器上無限運行php程序
- 20. 如何在運行Plesk Virtuozzo的服務器上升級php?
- 21. 如何在singile服務器上運行多個php版本
- 22. 「做你運行git更新服務器信息」在Github上庫
- 23. 如何在服務器上自主運行程序,如何在服務器上無限運行java程序?
- 24. 運行phpwebsocket服務器.php
- 25. 如何自動更新正在運行的Wildfly服務器上的模塊?
- 26. 如何在Google Compute Engine上執行服務器更新?
- 27. 如何在MAMP的php版本上運行composer?
- 28. 如何在個人運行服務器上運行Django項目
- 29. 如何讓Sonar Runner在源服務器上運行時運行?
- 30. 如何調用服務器上的.exe文件以在服務器上運行?
你不能使用終端? – gcampbell
不,我不能。這就是爲什麼問一個問題 – WhipsterCZ
[你不應該運行'composer update',而是''作者安裝'你的鎖文件](https://daylerees.com/the-composer-lock-file/) - 顯然你不能那樣做,但它需要提及。 – Gordon