さくらのVPS + WordPress + WooCommerceで決済プラグインをインストールするときに、Webサーバー(Apache)において必ずSoapClientとDOMdocumentの設定することが必要となります。
SoapcClientとDOMdocumentとは
ところでSoapClientとDOMdocumentとは何のことを指しているのでしょうか?
SoapClientとは
まずPHPの公式ドキュメントから引用した文章を紹介します。
SoapClientクラスはSOAP1.1、SOAP1.2サーバー用のクライアントとなります。
この引用した文章だけでは、何のことを言っているのかよく分かりませんね。次にW3Cの公式ドキュメントでSOAP1.1の説明を確認しましょう。
SOAP is a lightweight protocol for exchange of information in a decentralized, distributed environment. It is an XML based protocol that consists of three parts
W3Cの引用文を要約するとXMLをベースとした通信規格で、APIデータを取得できる形式のことですね。
DOMdocumentとは
こちらもPHPの公式ドキュメントに掲載されている文章から引用します。
HTMLドキュメントあるいは、XMLドキュメント全体を表し、 ドキュメントツリーのルートとなります。
異なるプログラミング言語の説明に頼ることはあまり良いことではありませんが、MDNのDOMドキュメントを読むと理解が深まると思います。HTMLやXMLなど構造化表現をツリー状に表したものを指します。
PayPal SOAP API Clientについて
SoapClientとDOMdocumentの意味が分かれば、PayPalにおけるSOAP API Clientの役割も大体分かりますね。
PayPal SOAP API Clientとは
上記の画像はPayPal SOAP API Basicsのスクリーンショットです。PayPalのシステム内部にAPIデータがツリー状(DOMdocument)で用意されているので、それをSOAPという通信規格(プロトコル)で取得することが概念図で表現されています。
PayPalにおけるSOAP API Clientの意義
DOMdocumentは一種のデータ構造なのでそれ自体問題があっても、クライアントの開発者側には責任はありません。ただクライアントの開発者側がSOAPという一定の通信規格を用いるのは、ツリーデータを呼び出すときにデータがだだ漏れにならないよう防ぐ必要があるからです。
ちなみにAPIと聞くとRESTという名前の通信規格をイメージされる方もいらっしゃるかもしれません。RESTは不特定多数を対象にした、入力パラメータが少ない情報配信や検索サービス等での利用に向いています。例えばTwitterのAPIではRESTが用いられています。
一方、PayPalでSOAPが用いられるのは複雑な入力を必要としたり、入出力に対してチェックを必要とするようなサービス等での利用に向いているからでしょう。そのあたりの事情はQiitaの記事が参考になります(ただし現在、PayPalではSOAPよりもRESTを使うことが推奨されています)。
SoapClientとDOMdocumentを使えるようにする
SoapClientとDOMdocumentの意味とその意義はお分かりいただけたでしょうか?冒頭の画像のようにエラーがついている状態では、SoapClientとDOMdocumentを用いることはできません。
冒頭の画像の状態で決済プラグインを用いると、カード番号をはじめとした機密情報が外部にだだ漏れする可能性があります。決済プラグインを用いる以上、SoapClientとDOMdocumentを必ず使える状態にしなければなりません。
1.システム状況の確認
まずWordPressの管理画面内にあるWooCommerceの購入手続き画面から、PayPal(スタンダード)の設定画面に入ってシステム状況のリンクをクリックします。
するとWooCommerce内の設定状況が確認できます。その中でWordPressがインストールされているWebサーバー(Apache)の設定状況を確認します。この画面ではSoapclientとDOMdocumentの欄にエラーが出ていることが分かります。
2.PHP7の拡張モジュールをインストール
# yum install --enablerepo=remi,remi-php70 php-xml php-soap ... インストール: php-soap.x86_64 0:7.0.26-1.el7.remi php-xml.x86_64 0:7.0.26-1.el7.remi
この状態からSoapClientを使うためには、PHP(PHP7)の拡張モジュールをインストールする必要があります。当該のサーバーにroot権限でログインして、上記のyumコマンドを実行しましょう。コマンドの意味はremiリポジトリからphp-xml、php-soapの各モジュールを引っ張ってインストールするという感じです。
# systemctl restart httpd
最後にApacheの再起動を行いましょう。これでSoapclientとDOMdocumentの設定が完了しました。なお、SoapClientとDOMdocumentの意味はそれぞれPHPの公式ドキュメントを参考にしてください。
3.システム状況の再確認
再度、WooCommerce内の設定状況を確認します。今度はSoapClientとDOMdocumentの欄に緑色のチェックが付き、安全に決済プラグイン(PayPal)を用いることができます。
【参考サイト】