anyenvのphpenvでphp5.5を入れた時にapcの設定でハマった件
anyenvでphpenvを入れて、php5.5を入れて適当なphp書いて、ビルトインサーバで実行してみたら以下の様なnoticeが出た。
Notice: Unknown: 1. h->opened_path=[null] h->filename=[/private/var/apps/sample/index.php] in Unknown on line 0 Notice: Unknown: apc_cache_find [220575364] in Unknown on line 0 Notice: Unknown: 2. h->opened_path=[/private/var/apps/sample/index.php] h->filename=[/private/var/apps/sample/index.php] in Unknown on line 0 Notice: Unknown: apc_cache_make_file_entry: entry->data.file.filename is [/private/var/apps/sample/index.php] in Unknown on line 0 Notice: Unknown: Inserting [/private/var/apps/sample/index.php] in Unknown on line 0
php5.5からデフォルトOpecacheになったのになんでapcとか使われてるんだろうとおもって、php -i
してみたら
$ php -i | grep apc Configure Command => './configure' '--with-apxs2=/usr/sbin/apxs' '--enable-option-checking' '--enable-phar' '--disable-intl' '--with-libxml-dir=/usr/local/opt/libxml2' '--with-openssl=/usr/local/opt/openssl' '--with-openssl-dir=/usr/local/opt/openssl' '--with-kerberos=/usr' '--with-zlib' '--with-zlib-dir=/usr/local/opt/zlib' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--enable-exif' '--with-png-dir=/usr/local/opt/libpng' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-freetype-dir=/usr/local/opt/freetype' '--with-xpm-dir=/usr/X11' '--with-gd=/usr/local' '--enable-gd-native-ttf' '--with-pear' '--enable-mbstring' '--enable-mbregex' '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--with-xmlrpc' '--with-xsl=/usr/local/opt/libxslt' '--enable-zip' '--with-pcre-regex=/usr/local/opt/pcre' '--with-vpx-dir=/usr/local/opt/libvpx' '--with-pcre-dir=/usr/local/opt/pcre' '--with-curl=/usr/local/opt/curl' '--with-iconv-dir=/usr/local/opt/libiconv' '--with-mcrypt=/usr/local/opt/mcrypt' '--with-libexpat-dir=/usr/local/opt/expat' '--with-gettext=/usr/local/opt/gettext' '--enable-pcntl' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-mysql-sock=/tmp/mysql.sock' '--with-readline=/usr/local/opt/readline' '--enable-apc' '--enable-apc-debug' '--enable-apc-filehits' '--enable-igbinary' '--enable-memcached' '--with-libmemcached-dir=/usr/local/opt/libmemcached' '--enable-memcached-igbinary' '--with-http-curl-requests=/usr/local/opt/curl' '--with-http-curl-libevent=/usr/local/opt/libevent' '--with-http-zlib-compression=/usr/local/opt/zlib' '--with-http-magic-mime=/usr/local/opt/libmagic' '--with-config-file-path=/Users/t-yamaguchi/.anyenv/envs/phpenv/versions/5.5.9/etc' '--with-config-file-scan-dir=/Users/t-yamaguchi/.anyenv/envs/phpenv/versions/5.5.9/etc/conf.d' '--prefix=/Users/t-yamaguchi/.anyenv/envs/phpenv/versions/5.5.9' apc apc.cache_by_default => On => On apc.canonicalize => On => On apc.coredump_unmap => Off => Off apc.enable_cli => Off => Off apc.enabled => On => On apc.file_md5 => Off => Off apc.file_update_protection => 2 => 2 apc.filters => no value => no value apc.gc_ttl => 3600 => 3600 apc.include_once_override => Off => Off apc.lazy_classes => Off => Off apc.lazy_functions => Off => Off apc.max_file_size => 1M => 1M apc.mmap_file_mask => no value => no value apc.num_files_hint => 1000 => 1000 apc.preload_path => no value => no value apc.report_autofilter => Off => Off apc.rfc1867 => On => On apc.rfc1867_freq => 0 => 0 apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS apc.rfc1867_prefix => upload_ => upload_ apc.rfc1867_ttl => 3600 => 3600 apc.serializer => igbinary => igbinary apc.shm_segments => 1 => 1 apc.shm_size => 32M => 32M apc.shm_strings_buffer => 4M => 4M apc.slam_defense => On => On apc.stat => On => On apc.stat_ctime => Off => Off apc.ttl => 0 => 0 apc.use_request_time => On => On apc.user_entries_hint => 4096 => 4096 apc.user_ttl => 0 => 0 apc.write_lock => On => On
なぜかapcが有効になっているし、コンパイルオプションでも--enable-apc
とか付いてる。ひとまずphp.ini
で
-apc.enabled=1 +apc.enabled=0
な感じでapcを無効にしたらnoticeはでなくなりました。
ところで、anyenvで入れたphpenvはよくあるCHH/phpenvではなくて、phpenv/phpenvが使われる。CHH/phpenvでphp5.5を使っていた時はこんなことはなかったので、phpenv/phpenv側の設定だろうとおもってgithubのリポジトリを眺めていたら、↓あたりでそれっぽい感じのことをしていた。
https://github.com/phpenv/phpenv/blob/dev/etc/php-5.5.Darwin.source https://github.com/phpenv/phpenv/blob/dev/etc/ext/apc.ini
そもそもphp5.5でapcって動かせたっけ?APCuじゃなくて。