やろうとしたこと
- 自作の入力フォームからWordPress記事をPHPで投稿
- 投稿にはIXR_Library.php を利用
エラー内容
+error: IXR_Error {#478 ▼
+code: -32300
+message: "transport error - could not open socket"
- ローカルマシンでは投稿に成功。ただし、AWSではエラー
- AWSでは上記のエラー
結論
xmlrpc.phpにアクセスできていなかった。
公開中のマシンからドメイン名でアクセスができていなかったことが原因らしい。
ローカル・ループバック・アドレスでアクセスしたら解決
- ダメ new IXR_Client("サーバー名/WPディレクトリ/xmlrpc.php");
- OK new IXR_Client("127.0.0.1/WPディレクトリ/xmlrpc.php");
調査
No | 環境 | 投稿先 | 結果 |
---|---|---|---|
1 | ローカル | ローカルのWP | OK |
2 | ローカル | AWSのWP | OK |
3 | AWS | ローカルのWP | アクセス不可 |
4 | AWS | AWSのWP | NG |
ーーーー以下、おまけーーーー
環境
- Laravel 5.1.45 (LTS)
- PHP 7.1.2-3
ステージング環境(AWS)
- Laravel 5.1.35 (LTS)
- PHP 5.5.38 (cli)
ぐぐってみた
【PHP】XML-RPCで「-32300:transport error - could not open socket」エラーが出る
⇒php5.2.3以上かどうか or Basic認証をかけているとダメらしい
https://disqus.com/home/discussion/hurricanesoftwares/wordpress_xmlrpc_8211_posting_content_from_outside_wordpress/
⇒wordpressを更新 or php.iniの"memory_limit" を拡張
自動投稿の参考サイト
つまづいたこと
- laravelで実装。インスタンス生成時に「物理ファイル名」=「クラス名」でないとインスタンスが生成できず、困った。配布元のIXR_Libraryにクラス:IXR_Library を作成して、コンストラクタで各クラスを呼び出して対応した