0

WSSEでSOAPを使用するためにWSO2WSF/PHP拡張機能をインストールしようとしています。ソースをコンパイルするときに問題が発生しました。リポジトリからトランク(タグ2.1ではなく)をチェックアウトする必要がありました。ソースコードのphp 5.4の互換性の問題を数回修正し、最終的にすべてが正常にコンパイルされました。

しかし、この拡張機能を有効にしようとすると、エラーが発生します。

user@centos:~/wsf$ php -i | grep "wsf"                                                                                     
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525+lfs/wsf.so' - /usr/lib/php5/20100525+lfs/wsf.so: undefined symbol: rampart_context_set_prv_key in Unknown on line 0
/etc/php5/cli/conf.d/20-wsf.ini,                                                                                                                     
PWD => /home/user/wsf                                                                                                                                
_SERVER["PWD"] => /home/user/wsf

ソースでgrepを実行し、これを見つけました:

user@centos:~/wsf$ grep -r "rampart_context_set_prv_key" .                                                                         
./src/.svn/text-base/wsf_policy.c.svn-base:             rampart_context_set_prv_key(rampart_context, env, Z_STRVAL_PP(token_val));                   
./src/.svn/text-base/wsf_policy.c.svn-base:     if (rampart_context_set_prv_key_type (rampart_context, env, AXIS2_KEY_TYPE_PEM) == AXIS2_SUCCESS)    
Binary file ./src/modules/wsf.so matches
./src/wsf_policy.c:             rampart_context_set_prv_key(rampart_context, env, Z_STRVAL_PP(token_val));                                           
./src/wsf_policy.c:     if (rampart_context_set_prv_key_type (rampart_context, env, AXIS2_KEY_TYPE_PEM) == AXIS2_SUCCESS)                            
Binary file ./src/.libs/wsf.soT matches
Binary file ./src/.libs/wsf.so matches
Binary file ./src/.libs/wsf_policy.o matches
Binary file ./wsf_c/rampartc/src/util/.libs/librampart.so.0 matches
Binary file ./wsf_c/rampartc/src/util/.libs/librampart.a matches
Binary file ./wsf_c/rampartc/src/util/.libs/librampart.so.0.3.0 matches
Binary file ./wsf_c/rampartc/src/util/.libs/rampart_context.o matches
Binary file ./wsf_c/rampartc/src/util/.libs/librampart.so matches
./wsf_c/rampartc/src/util/rampart_context.c:rampart_context_set_prv_key(rampart_context_t *rampart_context,                                          
./wsf_c/rampartc/src/util/rampart_context.c:rampart_context_set_prv_key_type(rampart_context_t *rampart_context,                                     
./wsf_c/rampartc/src/util/rampart_context.c:rampart_context_set_prv_key_password(rampart_context_t *rampart_context,                                 
Binary file ./wsf_c/rampartc/src/util/rampart_context.o matches
./wsf_c/rampartc/include/rampart_context.h:    rampart_context_set_prv_key(rampart_context_t *rampart_context,                                       
./wsf_c/rampartc/include/rampart_context.h:    rampart_context_set_prv_key_type(rampart_context_t *rampart_context,                                  
./wsf_c/rampartc/include/rampart_context.h:    rampart_context_set_prv_key_password(rampart_context_t *rampart_context,

したがって、基本的には、rampart_context_set_prv_keyを使用するwsf_policy.cという1つのファイルしか見つかりませんでしたが、見た目は正しく、解決方法がわかりません。何か案は?

4

2 に答える 2

2

同じ問題。wsf/php 2.1 でセキュリティの例を実行しようとするとエラーと同じ方法で解決:

sudo apt-get install gcc-4.4

次に、実行して wsf/php を構成します

./configure CC=gcc-4.4

残りの通常のインストール手順に従うと、機能するはずです。

また、 wsf.so ライブラリをチェックして、城壁ライブラリがリンクされているかどうかを確認することもできます。

ldd /usr/lib/php5/20090626/wsf.so

また、まだ見つからない場合に備えて、PHP 5.4 を使用して WSF をコンパイルする手順を次に示します https://wso2.org/jira/browse/WSFPHP-477

于 2013-02-07T21:51:50.097 に答える
0

私のインストールでは、シンボル「rampart_context_set_prv_key」はライブラリ ${wsf.home}/lib/librampart.so で定義されており、RPATH 変数のおかげで wsf.so から直接アクセスできます。

于 2012-10-22T18:45:30.883 に答える