我正在尝试将Prestissimo安装到Ubuntu 16.04服务器上,但这会导致错误:
$ composer global require "hirak/prestissimo:^0.3"
Changed current directory to /home/kramer65/.composer
[ErrorException]
file_put_contents(./composer.json): failed to open stream: Permission denied
require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...
我以用户kramer65
登录,因此我不知道为什么它无法写入我的主文件夹。我对permission denied
的正常反应是使用sudo
,但作曲家总是说:
不要以超级用户身份运行Composer!有关详细信息,请参阅https://getcomposer.org/root
知道如何解决这个问题吗?
答案 0 :(得分:139)
我有这个问题要安装laravel / lumen。
我可以使用以下命令解决:
$ sudo chown -R $USER ~/.composer/
答案 1 :(得分:11)
要解决此问题,您应该打开一个终端窗口并输入以下命令:
sudo chown -R user ~/.composer
(user
是您当前的用户,在您的情况下,kramer65
)
运行此命令后,您应该有权运行composer global require命令。
您可能还需要从当前目录中删除.composer文件,为此打开一个终端窗口并输入以下命令:
sudo rm -rf .composer
答案 2 :(得分:1)
我也遇到过这个问题,但就我而言,我的目录错误。检查您正在使用的目录
答案 3 :(得分:0)
在我的情况下,.composer
由root拥有,所以我做了sudo rm -fr .composer
然后我的全局要求有效。
警告!如果您不确定自己在做什么,就不想使用该命令。
答案 4 :(得分:0)
这可能是超级边缘情况,但如果您使用Travis CI并利用缓存,则可能需要清除所有缓存并重试。
解决了我从sudo到非sudo版本时的问题。
答案 5 :(得分:0)
就我而言,~/.composer
没有问题。
因此,进入Laravel应用根目录后,我做了sudo chown -R $USER composer.lock
,它很有帮助。
答案 6 :(得分:0)
在您的PC中,只需在docker所在的目录中键入以下命令:
如果您将项目存储在其他文件夹中,则chown -R 1000:1000 / var / www
/ var / www 可以更改。
例如:
chown -R 1000:1000 / home / myuser / my_projects
答案 7 :(得分:0)
我遇到了相同的异常,但就我而言,我正在使用PowerShell运行命令
因此,我通过一条指令来解决此问题,该指令首先要取消解锁多个文件。
{
“statusCode”: 500,
“error”: {
“type”: “SERVER_ERROR”,
“description”: “ERROR: Module ‘sqlite3’ already loaded on line 0 in file Unknown.”
}
}
然后使用以下内容加载程序包
PS C:\> dir C:\executable_file_Path\*PowerShell* | Unblock-File
答案 8 :(得分:0)
就我而言,我使用sudo mkdir projectFolder
创建文件夹。它归root用户所有,我是使用非root用户登录的。
因此,我使用命令sudo chown mynonrootuser:mynonrootuser projectFolder
更改了文件夹权限,然后工作正常。
答案 9 :(得分:0)
对我来说,在Ubuntu 18.04中。我需要塞进~/.config/composer/
例如
sudo chown -R $USER ~/.config/composer
然后全局命令起作用。
答案 10 :(得分:0)
我在 WSL Windows 10 中使用它时遇到了同样的错误。我使用以下命令来解决它:-
// In your component.spec file,
@Injectable()
class MockService extends RealService {
yourOriginalServiceMethod() {
return of(mockData);
// Here mockData can be any mocked-data. It should be of whatever the type your
original method in the service returns. Like an object
// 'of' is the RXJS operator. It will turn your mockData to an Observable so that when you run the test case, it will be subscribed without any issue.
}
}
beforeEach(() => {
fixture = TestBed.createComponent(AppComponent);
component = fixture.componentInstance;
realService = TestBed.get(RealService); // this is important to test the subscription error scenario
});
describe('AppComponent', () => { // 2
beforeEach(async(() => { // 3
TestBed.configureTestingModule({
declarations: [
AppComponent
],
providers: [
{
provide: MockService,
useClass: RealService
}
]
}).compileComponents();
}));
// Now your test case,
it("component #yourComponentMethod() method for successful subscription",() => {
spyOn(component, "yourComponentMethod").and.callThrough();
component.yourComponentMethod();
expect(component.yourComponentMethod).toHaveBeenCalled();
// THis method will clear the successful subscription scenario
});
it("component #yourComponentMethod() method for failed subscription",() => {
// This line will call the service and instead of returning mockData, it will fail it.
spyOn(realService, 'yourMethodName').and.returnValue(throwError({status: 500}));
// Rest is the same
spyOn(component, "yourComponentMethod").and.callThrough();
component.yourComponentMethod();
expect(component.yourComponentMethod).toHaveBeenCalled();
// THis method will clear the failed subscription scenario
});