0

まず、この問題についてインターネット全体を検索しましたが、まだ解決策を見つけることができませんでした。

私は Mac mini PowerPC (PPC) を持っていて、PHP (5.4.0) で Apache Web サーバー (httpd-2.2.22) を実行し、すべての構成とコンパイルのジョブを自分で行います。

'./configure' '--prefix =
/usr/local/php5' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir= /etc' '--with-config-file-path=/etc' '--with-zlib' '--with-zlib-dir=/usr' '--with-openssl=/usr' '--without -iconv''--enable-exif''--enable-ftp''--enable-mbstring''--enable-mbregex''--enable-sockets''--with-mysql=/usr/local/ mysql' '--with-pdo-mysql=/usr/local/mysql' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-apxs2=/usr/local/apache2/ bin/apxs'' --with-mcrypt'

その後、PHP は問題なく動作します。しかし、上記のスクリプトにこれらを追加して GD モジュールを追加すると、次のようになります。

'--with-gd' '--with-jpeg-dir=/usr/local/lib' '--with-freetype-dir=/usr/X11R6' '--with-png-dir=/usr/X11R6 ''--with-xpm-dir=/usr/X11R6'

PHP はエラーなしで構成およびコンパイルされますが、PHP モジュールを呼び出すページを要求すると、EXC_BREAKPOINT (SIGTRAP) (以下の Crash Reporter ログを参照) が発生します。

GD モジュールに関連する何かがこれを引き起こしていることは明らかです。ログに存在するため、おそらく FreeType モジュールですが、もちろん明確ではない可能性があります。

PHP がクラッシュすると (より正確には httpd)、CPU は回復するまで 10 秒から 15 秒間 100% になります。

GD モジュールを使用し、Mac mini PowerPC を保持する必要があります。では、この問題を解決するにはどうすればよいでしょうか。

プロセス: httpd [79852]
パス: /usr/local/apache2/bin/httpd
識別子: httpd
バージョン: ???(???)
コードタイプ: PPC (ネイティブ)
親プロセス: httpd [79846]

日時: 2013-11-04 15:44:28.444 +0200
OS バージョン: Mac OS X 10.5.8 (9L31a)
レポートのバージョン: 6
匿名 UUID: 0178B7F8-2241-43F7-A651-9E7234D41A37

例外タイプ: EXC_BREAKPOINT (SIGTRAP)
例外コード: 0x0000000000000001、0x0000000093c11e0c
クラッシュしたスレッド: 0

アプリケーション固有の情報:
*** シングルスレッド プロセスがフォークされました ***

スレッド 0 がクラッシュしました:
0 com.apple.CoreFoundation 0x93c11e0c __CFRunLoopF​​indMode + 328
1 com.apple.CoreFoundation 0x93c13d88 CFRunLoopAddSource + 276
2 com.apple.DiskArbitration 0x901a6e8c DAApprovalSessionScheduleWithRunLoop + 52
3 ...ple.CoreServices.CarbonCore 0x9512e67c _FSGetDiskArbSession(__DASession**, __DAApprovalSession**) + 540
4 ...ple.CoreServices.CarbonCore 0x9512e420 CreateDiskArbDiskForMountPath(char const*) + 84
5 ...ple.CoreServices.CarbonCore 0x9512d2c8 FSCacheableClient_GetVolumeCachedInfo(char const*, statfs const*, CachedVolumeInfo*, __DADisk*, __DADisk**) + 280
6 ...ple.CoreServices.CarbonCore 0x9512cca4 MountVolume(char const*, statfs*, unsigned char, unsigned char, __DADisk*, short*) + 352
7 ...ple.CoreServices.CarbonCore 0x9512ca48 MountInitialVolumes() + 172
8 ...ple.CoreServices.CarbonCore 0x9512c4d4 INIT_FileManager() + 164
9 ...ple.CoreServices.CarbonCore 0x9512c390 GetRetainedVolFSVCBByVolumeID(unsigned long) + 48
10 ...ple.CoreServices.CarbonCore 0x9512adf4 PathGetObjectInfo(char const*, unsigned long, unsigned long, VolumeInfo**, unsigned long*, unsigned long*, char*, unsigned long*, unsigned char*) + 184
11 ...ple.CoreServices.CarbonCore 0x9512acc4 FSPathMakeRefInternal(unsigned char const*, unsigned long, unsigned long, FSRef*, unsigned char*) + 64
12 libfreetype.6.dylib 0x0070a0fc FT_New_Face_From_Resource + 56
13 libfreetype.6.dylib 0x0070a3b0 FT_New_Face + 48
14 libphp5.so 0x0118d1a8 fontFetch + 824
15 libphp5.so 0x0118edac php_gd_gdCacheGet + 220
16 libphp5.so 0x0118d6d8 php_gd_gdImageStringFTEx + 360
17 libphp5.so 0x011763c0 php_imagettftext_common + 1504
18 libphp5.so 0x01176494 zif_imagefttext + 20
19 libphp5.so 0x014b9c68 zend_do_fcall_common_helper_SPEC + 1048
20 libphp5.so 0x01452898_ZEND_DO_FCALL_SPEC_CONST_HANDLER + 440
21 libphp5.so 0x014ba878 実行 + 776
22 libphp5.so 0x013f190c zend_execute_scripts + 316
23 libphp5.so 0x013779f4 php_execute_script + 596
24 libphp5.so 0x014bbe64 php_handler + 1972
25 httpd 0x000020c0 ap_run_handler + 96
26 httpd 0x00006ae0 ap_invoke_handler + 224
27 httpd 0x000305c4 ap_process_request + 116
28 httpd 0x0002c768 ap_process_http_connection + 104
29 httpd 0x00012d30 ap_run_process_connection + 96
30 httpd 0x00012ecc ap_process_connection + 92
31 httpd 0x000373e4 child_main + 1220
32 httpd 0x000376a8 make_child + 296
33 httpd 0x000377e4 startup_children + 100
34 httpd 0x000387d4 ap_mpm_run + 3988
35 httpd 0x0000a320 メイン + 3280
36 httpd 0x000019c0 開始 + 64
4

1 に答える 1

0

問題の原因と解決策が見つかりました: 私が推測したように、問題の原因は FreeType、またはより正確には Apple.CoreServices.CarbonCore との関係にあり、解決策は FreeType を CarbonCode から切り離すことであり、その方法は次のとおりです。

次のように FreeType ライブラリを再構成します。

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bindatload" ./configure --with- fsspec=いいえ --with-fsref=いいえ --with-quickdraw-toolbox=いいえ --with-quickdraw-carbon=いいえ

最後の「いいえ」オプションに注意してください。これらは FT を CC から切り離します。上記の LDFLAGS と -bindatload の式が必要かどうかはわかりませんが、そのまま置いておきます。

この再構成と一般的な PHP の再コンパイルの後、GD 拡張機能は問題なく動作するようになりました。

于 2013-11-05T01:44:14.847 に答える