IISでForce.comのPHP Tool KitのSoapを動かす


クラウド環境でCRMシステムを提供する Salseforce.com ではクラウドとの連携を行うためのPHPライブラリが提供されています。

ここで提供されているSOAPを利用したサンプルプログラムでは、IIS上で動作するPHPアプリケーションから Salseforce.com クラウド内の取引先責任者(Contact) を登録することができます。

以下、IIS上でサンプルアプリケーションを稼動させる手順を示します。

  1. PHP を利用したサンプルプログラムをダウロードします。
    ダウンロードサイトhttp://wiki.developerforce.com/index.php/Self-Service_Portal_Toolkit_for_PHP_5

    Download

    Download

  2. ダウンロードしたファイルを展開し IISのアプリケーションに追加設定し、実行してみます。
    例.  http:// xxxxxx/ssp-php5-0.9.1/samples/signup.php

    • このサンプルアプリケーションは php_soap.dll が必要となります。
      下記のようなエラーが発生した場合、 php_soap.dll の設定を行います。

      PHP Fatal error: ?Class 'SoapClient' not found in C:xxxx\0work\ssp-php5-0.9.1\soapclient\SforceBaseClient.php on line 57

      php.ini の編集および php_soap.dll を拡張フォルダに設置した後、IISを再起動します。

      -サービスのWorld Wide Web Publishing Serviceを再起動

      -コマンドラインから iisreset でも再起動することができます。

      再起動後、phoinfo にて SOAPの項目が表示されることを確認します。

      php_soap.dll

      php_soap.dll

      PHP.ini で指定した拡張フォルダに dll ファイルを設置します。
      Web Platform Installer で PHPをインストールした場合、PHPは Non-thread-safe のものが導入されています。

    • force.com との連携設定
      /ssp-php5-0.9.1/samples/config.ini ファイルに force.com との連携用のユーザー名とバスワードを設定します。

       goldenUsername = "xxxx@xxxx.com"
       goldenPassword = "パスワード+セキュリティートークン"
       sspPassword = "A_SSP_Password"
       accountName = "IBM"
       sf_wsdl     = "partner.wsdl.xml"

      この設定が正しくない場合、以下のようなエラーとなります。

      There was a problem logging in as the golden user.
      The SOAP error message was: INVALID_LOGIN: Invalid username, password, security token; or user locked out.

      http://public.bay.livefilestore.com/y1pEsSoDg8JIrE3zvgo-uzzgFaKiKLeLoAdOznf5MqP0yp-ybUn270G93Ck5nDpRh4_Z33KHQzTiCTJojFNUhs52A/salseforce_php_sample_err.jpg

      Invalid_Login_User

  3. サンプルアプリケーションが起動し、実際にデータを登録してみます。
  4. 例. http://xxxx/ssp-php5-0.9.1/samples/signup.php

    – 以下のような表示で処理が停止されることがあります。

    PHP Notice:  Undefined property: stdClass::$records in C:\xxx\ssp-php5-0.9.1\selfserviceuser\SelfServiceUserUtility.php on line 65
    PHP Notice:  Trying to get property of non-object in C:\xxx\ssp-php5-0.9.1\selfserviceuser\SelfServiceUserUtility.php on line 65
    PHP Warning:  DOMDocument::save(Users.xml) [<a href="domdocument.save">domdocument.save</a>]: failed to open stream: Permission denied in C:\apps\0work\ssp-php5-0.9.1\samples\XMLSecurityHandler.php on line 58

    3行目の Warning は Users.xml への書き込み権限の不足が原因ですので、このファイルへの書き込み権限を付与します。

    - IUSER にフルコントロールを許可

    – IISの場合、 1,2行目の Notice の表示により、以後の

      header('Location: success.php');

    による処理が実行されなくなります。
    対応として php.ini の error_reporting の設定を変更し、IISを再起動します。

      error_reporting  =  E_ALL & ~E_NOTICE

    * IIS7.5(Windows7, Windows2008 Server R2)ではこの設定は必要ありません。
    * 該当のフォルダ配下の web.config の設定で個別の php.ini を指定することができます。

    例.

    <add name="PHP via FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\php\php-cgi.exe|-c c:\php\php2.ini" resourceType="Unspecified" />

    ログインに成功すると以下のような画面が表示されます。

    Login_Success

    Login_Success

    作成したユーザー情報は取引先責任者として force.com のサイトに登録されます。

    contact

    account

    また同時に /ssp-php5-0.9.1/samples/Users.xml にユーザー情報として記録されます。

以上


タグ: ,


コメントをどうぞ