おはようございます。
年末年始の休暇に入ったので朝からのんびりプログラミングしている僕です。
さて、先ほど出会ったトラブルの一つをご紹介しようと思います。
最近cakephpを触ってないなーとか思った僕ですが、ACSの操作をcakeで出来たら面白いかなと思ったので、開発環境を準備していました。
composer.jsonはこんな感じです。
composer.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
{
"repositories": [
{
"type": "pear",
"url": "http://pear.cakephp.org"
},
{
"type": "package",
"package": {
"name":"cakebaker/oauth-consumer",
"version": "dev-master",
"source": {
"url": "https://github.com/cakebaker/oauth-consumer",
"type": "git",
"reference": "origin/master"
}
}
}
],
"require": {
"pear-cakephp/cakephp": ">=2.3.4",
"cakedc/migrations": "dev-feature/migrations-from-cli",
"cakebaker/oauth-consumer": "dev-master"
},
"require-dev": {
"cakephp/debug_kit": "2.2.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
|
で、以下のようにインストールしてみたら。。。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$ composer install
PHP Fatal error: Cannot redeclare class Composer\Repository\CompositeRepository in phar:///Users/polidog/bin/composer/src/Composer/Repository/CompositeRepository.php on line 22
PHP Stack trace:
PHP 1. {main}() /Users/polidog/bin/composer:0
PHP 2. require() /Users/polidog/bin/composer:15
PHP 3. Composer\Console\Application->run() phar:///Users/polidog/bin/composer/bin/composer:43
PHP 4. Symfony\Component\Console\Application->run() phar:///Users/polidog/bin/composer/src/Composer/Console/Application.php:83
PHP 5. Composer\Console\Application->doRun() phar:///Users/polidog/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP 6. Symfony\Component\Console\Application->doRun() phar:///Users/polidog/bin/composer/src/Composer/Console/Application.php:117
PHP 7. Symfony\Component\Console\Application->doRunCommand() phar:///Users/polidog/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP 8. Symfony\Component\Console\Command\Command->run() phar:///Users/polidog/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:897
PHP 9. Composer\Command\UpdateCommand->execute() phar:///Users/polidog/bin/composer/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:244
PHP 10. Composer\Installer->run() phar:///Users/polidog/bin/composer/src/Composer/Command/UpdateCommand.php:118
PHP 11. Composer\Installer->doInstall() phar:///Users/polidog/bin/composer/src/Composer/Installer.php:210
PHP 12. Composer\DependencyResolver\Pool->addRepository() phar:///Users/polidog/bin/composer/src/Composer/Installer.php:337
PHP 13. Composer\Repository\ArrayRepository->getPackages() phar:///Users/polidog/bin/composer/src/Composer/DependencyResolver/Pool.php:158
PHP 14. Composer\Repository\VcsRepository->initialize() phar:///Users/polidog/bin/composer/src/Composer/Repository/ArrayRepository.php:170
PHP 15. Composer\Repository\VcsRepository->getDriver() phar:///Users/polidog/bin/composer/src/Composer/Repository/VcsRepository.php:113
PHP 16. Composer\Autoload\ClassLoader->loadClass() phar:///Users/polidog/bin/composer/src/Composer/Repository/VcsRepository.php:0
PHP 17. include() phar:///Users/polidog/bin/composer/vendor/composer/ClassLoader.php:185
PHP 18. Composer\Autoload\ClassLoader->loadClass() phar:///Users/polidog/bin/composer/vendor/composer/ClassLoader.php:0
PHP 19. include() phar:///Users/polidog/bin/composer/vendor/composer/ClassLoader.php:185
Fatal error: Cannot redeclare class Composer\Repository\CompositeRepository in phar:///Users/polidog/bin/composer/src/Composer/Repository/CompositeRepository.php on line 22
|
Cannot redeclare classって…なんでだろう。。。
基本的にcomposerな訳だし、そんなこと言われても・・・って感じでしたが、よく考えたらapcがcliでも有効になってるからかなーとか思った訳です。
ということで以下のようにapcの設定を修正しました。
1
2
3
4
5
6
7
8
9
10
|
[apc]
extension="/usr/local/php54-apc/3.1.10/apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=64M
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=0 #ここを1から0に
|
これで再度composer installすればうまくいくはずです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$ composer install
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Installing dependencies (including require-dev)
- Installing composer/installers (v1.0.8)
Loading from cache
- Installing cakedc/migrations (dev-feature/migrations-from-cli 14cdc86)
Cloning 14cdc86b3d4d3ef83509db4e9e52fe400623925f
- Installing cakebaker/oauth-consumer (dev-master origin/master)
Cloning origin/master
- Installing pear-pear.cakephp.org/cakephp (2.4.4)
Loading from cache
- Installing cakephp/debug_kit (2.2.2)
Loading from cache
|
参考
https://github.com/composer/composer/issues/264