ホームページ  >  記事  >  CMS チュートリアル  >  phpcms v9 通信が失敗した場合の対処方法

phpcms v9 通信が失敗した場合の対処方法

藏色散人
藏色散人オリジナル
2020-01-07 10:47:193176ブラウズ

phpcms v9 通信が失敗した場合の対処方法

phpcms v9 通信が失敗した場合はどうすればよいですか? Phpcms v9 が Phpsso との通信に失敗し、メンバーが登録またはログインできない場合はどうすればよいですか?

友人はこう言いました:

サーバーの他の構成は正しいですが、通信は常に失敗します。理由が見つかりました:

ファイアウォールのあるサーバーは通常、ポート マッピング。これは外部ネットワークにつながります。Web サイトにはドメイン名を介して通常アクセスできますが、イントラネット上のドメイン名を介して Web サイトにアクセスすることはできません。 v9 と phpsso の間の通信インターフェイスのアドレスはドメイン名を介してリンクされているため、常に通信障害が発生します。これは v9 自体の欠陥であり、開発者はこれを十分に考慮していませんでした。

公式がこのバグをできるだけ早く修正してくれることを願っています。

一部の友人は次のようにも言いました:

公式にダウンロードされたインストール パッケージの phpsso_server ファイルにはそのようなファイルはありません。したがって、解決策は、v9 の phpcms/libs/classes/ フォルダーからこれをコピーし、phpsso_server/caches/ ファイルの下にセッション ディレクトリを作成することです。そうしないと、ファイルに書き込むことができません。

もちろん、インターネット上には、session_mysql.class.php ファイルの 21 行目のステートメント session_start(); を前の文の前に置くという方法もあります。解決されますが、v9 ではデータベースは使用されず、保存方法はファイル ストレージのみが使用され、セッションの保存場所は system.php で設定された場所に従って保存されません。 php.iniファイルで設定したディレクトリに保存されます。

解決策を提供します:

phpcms\modules\member\classes\client.class.php の 361 行目

$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);

を After の後に

$fp = stream_socket_client("tcp://".($ip ? $ip : $host).":".$port, $errno, $errstr, $timeout);

に変更します。テストすると、正常にログインできます。

多くの友人がこの問題に遭遇しましたが、Linux Apache ではこの問題は比較的まれです。

PHP 中国語 Web サイト、多数の無料 PHPCMS チュートリアル 、オンライン学習へようこそ!

以上がphpcms v9 通信が失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。