소스 검색

Prevent APC causing random fatal errors [fixes #264]

Update the phar stub to prevent APC attempting to run the composer classes through
the opcode cache on supported APC versions to avoid the random fatal "duplicate
class" errors at runtime as reported in #264.

Prior to APC version 3.0.12 this was a PHP_INI_SYSTEM directive, so output a
warning instead.
Andrew Coulton 10 년 전
부모
커밋
9ca99762f9
1개의 변경된 파일10개의 추가작업 그리고 0개의 파일을 삭제
  1. 10 0
      src/Composer/Compiler.php

+ 10 - 0
src/Composer/Compiler.php

@@ -212,6 +212,16 @@ class Compiler
  * the license that is located at the bottom of this file.
  */
 
+// Avoid APC causing random fatal errors per https://github.com/composer/composer/issues/264
+if (extension_loaded('apc') && ini_get('apc.enable_cli') && ini_get('apc.cache_by_default')) {
+    if (version_compare(phpversion('apc'), '3.0.12', '>=')) {
+        ini_set('apc.cache_by_default', 0);
+    } else {
+        fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL);
+        fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL);
+    }
+}
+
 Phar::mapPhar('composer.phar');
 
 EOF;