ページ(開発版)を使用するapp_dev.php
と、問題はなく、すべて正常に動作します。
しかし、app.php ページにアクセスしようとすると、一部のページで Apache がクラッシュする傾向があります。
構成は次のとおりです。
- カーネル 3.2.13 を搭載した Debian 6 x64
- アパッチ 2.2.22
- PHP 5.3.3-7+squeeze13 拡張機能付き: pdo / pdo_mysql / pdo_pgsql / pdo_sqlite / intl / apc / gd
コアダンプにより、次の結果が得られます。
#0 0x00007feab144e556 in zend_std_read_property (object=0x3, member=0x7feaa30ab840, type=3) at /tmp/buildd/php5-5.3.3/Zend/zend_object_handlers.c:340
#1 0x00007feab1463604 in zend_fetch_property_address_read_helper_SPEC_VAR_CONST (type=3, execute_data=0x7feab5cf5eb0) at /tmp/buildd/php5-5.3.3/Zend/zend_vm_execute.h:10084
#2 0x00007feab1453570 in execute (op_array=0x7feab5c863d8) at /tmp/buildd/php5-5.3.3/Zend/zend_vm_execute.h:107
#3 0x00007feab1420ef4 in zend_call_function (fci=0x7fff2689bfb0, fci_cache=0x0) at /tmp/buildd/php5-5.3.3/Zend/zend_execute_API.c:963
#4 0x00007feab1442047 in zend_call_method (object_pp=0x7fff2689c0d8, obj_ce=0x7feab63ea400, fn_proxy=0x7fff2689c0e8, function_name=0x7feab181e556 "__destruct",
function_name_len=646561136, retval_ptr_ptr=0x0, param_count=-1320891466, arg1=0x7fea00000000, arg2=0x0) at /tmp/buildd/php5-5.3.3/Zend/zend_interfaces.c:97
最初のフレームの詳細:
#0 0x00007feab144e556 in zend_std_read_property (object=0x3, member=0x7feaa30ab840, type=3) at /tmp/buildd/php5-5.3.3/Zend/zend_object_handlers.c:340
340 property_info = zend_get_property_info(zobj->ce, member, (zobj->ce->__get != NULL) TSRMLS_CC);
送信された最初の引数 zobj->ce = 0x3 は疑わしいと思われたので、zobj の内容を調べました。
(gdb) p *zobj
$3 = {ce = 0xa5935461f887fe37, properties = 0xa5935461f8e5bbb7, guards = 0x0}
しかし、 zobj->ce を含むものは何ですか?
(gdb) p *(zobj->ce)
Cannot access memory at address 0xa5935461f887fe37
このアドレスが無効なメモリ位置につながるようです。気がかりなのは、この問題が Symfony2 アプリの製品版を使用している場合にのみ発生することです。これは、APC または製品版のみがロードされた別のモジュールに問題があることを示している可能性がありますが、この原因についての手がかりは見つかりませんでした。
インストールしたほとんどの PHP 拡張機能を再インストールしようとしましたが、それまで結果はありませんでした。
編集: 必要に応じて、Symfony2 に同梱されている元のファイルである app.php コードを次に示します。しかし、それが問題の原因であるとは本当に信じていません。
header('P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT');
require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
$kernel->handle(Request::createFromGlobals())->send();