沒有想過,原來自己寫的 PHP 也會產生這個檔案。這個原因是出自於我架的 Apache HTTPD 運行 PHP 所產生的,透過 HTTPD 類似執行 shell_exec( "/path/bin/php /tmp/test.php > /dev/null & " );
如果產生 php.core 檔案,可以到官網參考解決方式:
我自己的情況是透過以下方式看訊息的:
- # gdb /path/bin/php php.core
- (gdb) bt ;
- 會蹦出一堆訊息讓你參考
- #0 0x88b9194d in calloc () from /lib/libc.so.7
#1 0x88b91b7e in free () from /lib/libc.so.7
#2 0x082cbf9a in destroy_zend_class (pce=0x88e3e76c) at /path/php-5.2.10/Zend/zend_opcode.c:202
#3 0x082de386 in zend_hash_destroy (ht=0x10) at /path/php-5.2.10/Zend/zend_hash.c:526
#4 0x082d48b8 in zend_shutdown () at /path/php-5.2.10/Zend/zend.c:736
#5 0x08293f3f in php_module_shutdown () at /path/php-5.2.10/main/main.c:1908
#6 0x083500a0 in main (argc=4, argv=0xbfbfe71c) at /path/php-5.2.10/sapi/cli/php_cli.c:1357
- #0 0x88b9194d in calloc () from /lib/libc.so.7
- # gdb /path/bin/php
- (gdb) run /tmp/test.php arg1 arg2 arg3;
- 沒多久看到訊息
- ...
- Fatal error: Call to undefined function imagecreatefromstring() in /tmp/test.php on line xxx
- ...
- Program received signal SIGSEGV, Segmentation fault
- 0x88b9194d in calloc () from /lib/libc.so.7
因此,至少知道點方向了 :-) 但這主因並不是缺少 library 啦,經多次測試後,發現用 5.2.10 使用 imap_search 後產生的問題,改用 5.2.9 就不會出現 Segmentation fault 啦。
# [ @ php-5.2.10 ] ./configure --with-apxs2=/path/httpd/bin/apxs --prefix=/path/php --without-pear --with-openssl --with-imap --with-imap-ssl
使用 imap_open -> imap_search -> imap_close 則會出現 Segmentation fault ,但改用 php-5.2.9 就不會發生。
另外一聊,在開發移植的環境上,最好先弄個 lib_test.php 的檔案,用來測試必要的 function 是否存在:
- <?php
$test_func = array(
'imagecreatefromstring' ,
'imagesx' ,
'imagesy' ,
'imagecopyresized' ,
'imagejpeg' ,
'imagedestroy'
);
foreach( $test_func as $v )
if( !function_exists( $v ) )
echo "'$v' not found!\n";
?> - # /path/bin/php lib_test.php
沒有留言:
張貼留言