回答
是的。有一个解决方案。但它可能需要一些服务器配置... 和其中一些由于安全风险被默认禁止!
下载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. 如何在测试/生产服务器上运行“composer update”?
- 2. 在asp.net服务器上运行PHP
- 3. php没有在服务器上运行
- 4. 如何在服务器上运行JavaScript
- 5. 如何在php 5.5服务器上运行php 5.4代码或更早版本
- 6. 如何运行更新appwidget的服务?
- 7. 如何在生产服务器上运行Yard服务器?
- 8. 如何在singile服务器上运行多个php版本
- 9. 如何在Windows主机服务器上运行.php文件
- 10. 如何在服务器上连续运行一个php程序?
- 11. 如何在tomcat 7服务器上运行php(CentOS)
- 12. 如何在运行Plesk Virtuozzo的服务器上升级php?
- 13. 如何在ASP运行服务器上重定向PHP URL?
- 14. “做你运行git更新服务器信息”在Github上库
- 15. 如何在MAMP的php版本上运行composer?
- 16. 如何让Sonar Runner在源服务器上运行时运行?
- 17. 如何在个人运行服务器上运行Django项目
- 18. 如何更新/替换服务器上的PHP脚本
- 19. PHP脚本可以在一台服务器上运行,但不能在另一台服务器上运行
- 20. 在一台服务器上通过Cronjob运行但未在类似服务器上运行的PHP脚本
- 21. 在同一台服务器上运行PHP 5.4和PHP 7
- 22. PHP 5.4可以在PHP 5.3上运行配置服务器
- 23. 在服务器端运行php问题
- 24. 在Phing中运行php服务器
- 25. 如何运行Laravel 5.4的Composer更新命令?
- 26. 如何通过命令行在服务器上运行php脚本
- 27. 如何在Linux上从命令行运行PHP代码服务器
- 28. 如何在Docker的容器上运行Python服务器
- 29. 如何在远程服务器上运行命令行程序
- 30. 如何通过SSH在远程服务器上运行Web服务器脚本?
你不能使用终端? – gcampbell
不,我不能。这就是为什么问一个问题 – WhipsterCZ
[你不应该运行'composer update',而是''作者安装'你的锁文件](https://daylerees.com/the-composer-lock-file/) - 显然你不能那样做,但它需要提及。 – Gordon