Composer安装插件
composer 市场地址:https://packagist.org/
搜索出相关扩展,例如安装:alipaysdk/easysdk 扩展
进入项目根目录输入以下命令安装扩展
composer require alipaysdk/easysdk
安装指定版本扩展
这里的版本号是假的,只当做例子
composer require alipaysdk/easysdk:v2.0.0
安装扩展后,后台前台无法访问?
- 检查vendor/services.php文件内是否是空的,如果是空的。那就是证明安装到最后一步执行php think service:discover失败了,可以直接执行:composer dump-autoload。然后去看vendor/services.php文件是否回复正常
composer2.0版本安装扩展后执行php think service:discover
还是无法访问?
找到vendor\topthink\framework\src\think\console\command\ServiceDiscover.php
文件
32行左右,在此行上增加代码,如下代码,然后保存,在执行php think service:discover
if (isset($packages['packages'])) {
$packages = $packages['packages'];
}
$services = [];
foreach ($packages as $package) {
if (!empty($package['extra']['think']['services'])) {
$services = array_merge($services, (array) $package['extra']['think']['services']);
}
}
修改了
topthink
底层文件是否影响之后的扩展安装,肯定是会的。还有一种办法就是升级·topthink
框架,框架已经兼容了composer2.0
版本的上述问题
安装上面两种办法都不能正常访问网站?
手动修改vendor/services.php
文件,在文件中增加如下代码
return array (
0 => 'think\\captcha\\CaptchaService',
1 => 'think\\app\\Service',
2 => 'think\\queue\\Service',
);
自定义自动加载目录或者文件
在根目录的composer.json文件中增加需要自定义的目录
搜索autoload在json中增加单独自动加载目录
open目录内的文件按照文件目录的命令规范进行创建类,在框架的任何地方都可以自动加载进来
{
"autoload":{
"psr-4": {
"app\\": "app",
"crmeb\\": "crmeb",
"open\\":"open"
}
}
}
搜索autoload在json中增加单独自动加载文件
{
"autoload":{
"files": [
"app/helpers.php"
]
}
}
执行自动加载命令
在项目根目录下打开命令行,执行下面的命令,执行成功后就可以自动加载公共函数文件或者是自定义目录中的类文件了
composer dump-autoload