3

PHP 内から MongoDB に接続しようとすると、PHP プロセスがクラッシュするという問題が発生します。

    $options = array(
        'replicaSet' => false,
        'persist' => false,
        'connect' => false,
        'username' => false,
        'password' => false
    );

    $mongo = new \Mongo('mongodb://localhost:27017', $options);

ただし、次のphp-cliコードは正常に機能します。

$ php -a
php > $mongo = new \Mongo('mongodb://localhost:27017');
php > var_dump($mongo);
object(Mongo)#1 (4) {
  ["connected"]=>
  bool(true)
  ["status"]=>
  NULL
  ["server":protected]=>
  string(25) "mongodb://localhost:27017"
  ["persistent":protected]=>
  NULL
}

ただし、これが発生した場合、PHP エラー ログには何もありません (その直前に例外をスローすると、その例外がログに記録されます)。ただし、FPM と syslog は次のエントリをキャッチします。何かがログに記録される前に、PHP がひっくり返ってクラッシュするかのようです。

php5-fpm.log: WARNING: [pool www] child 9261 exited on signal 11 (SIGSEGV)
after 57.894803 seconds from start


syslog: localhost kernel: [12191.961070] php5-fpm[9261]: segfault at 8 ip 
00007f5329b1b371 sp 00007fff37343b68 error 4 in libc-2.13.so[7f5329a97000+197000]
  • PHP バージョン 5.3.6-13ubuntu3.8 (API 20090626)
  • MongoDB 1.2.10 拡張機能
  • スホシン v0.9.32.1

実際のバグと思われるものをデバッグするにはどうすればよいですか?

アップデート:

OSをubuntu 12.04 LTSにアップグレードしました

  • PHP バージョン 5.3.10-1ubuntu3.2 (API 20090626)
  • MongoDB 1.2.12 拡張機能
  • スホシン v0.9.33

しかし、私はまだ問題があります。

syslog: kernel: [ 6727.997940] php5-fpm[9012]: 
segfault at 8 ip 00007f1fdf8cab91 sp 00007fff7f07a4a8 error 4
in libc-2.15.so[7f1fdf842000+1b3000]
4

2 に答える 2

0

問題は、Mongo による$options配列の処理にあるようです。

$options = array(
    'replicaSet' => false,
    'persist' => false,
    'connect' => false,
    'username' => false,
    'password' => false
);

$mongo = new \Mongo('mongodb://localhost:27017', $options);

次の作業中にプロセスがクラッシュします

$options = array(
    'replicaSet' => false,
    'persist' => false,
    'connect' => false,
    //'username' => false,
    //'password' => false
);

$mongo = new \Mongo('mongodb://localhost:27017', $options);

基本的に、必要でない限り、ユーザー名やパスワードを渡さないでください。これは本当にバグだと思います。

于 2012-07-24T15:42:57.190 に答える
0

Mongo 1.2.11 を使用してみてください。1.2.10 は php-fpm に問題があるようです。

于 2012-07-23T20:26:21.587 に答える