2024.05.24 その他
システム開発 - PhpStormを使っていて全てのFTPソフトが使えなくなったとき
昨年の秋ごろからか、自分のFTP環境で一切ファイルの上げ下げができなくなる事象が発生しました。環境は下記の通りです。
- OS:Windows11
- FTPソフト:PhpStorm、FFFTP、FileZilla
- Webサーバー:CPI
弊社はWeb制作会社なので、お客さまにWebサーバーを進める際は慣習的にCPIを進めることが多く、今回のお客さまもそのCPIサーバーでした。
なぜCPIサーバーを言及するかというと、日々色んなお客さまのWebサーバーに接続することがありますが、Xserverなど他のサーバーではまだこの事象にであっていないためです。
解決までに8カ月近くかかった
最初の頃は、特に大量のファイルをアップロードした後に、全てのFTPソフトの接続ができなくなることがあったのですが、出会う頻度も低く、翌日以降には解消しているので、特に大きな問題としては取り上げていませんでした。
ただ、引き続き、この事象に出会うこともあり、その度に検索サイトやChatGPTなどで調べてみるのですが、具体的な回答を得ることができず、そのたびにあきらめていました。
そして、今年の4月ごろから、切羽詰まった状況が増え、CPIにも問合せてみたりしましたが、接続履歴がないという回答だったり、WebからアップロードできるCPIのサービスでは、接続できてしまっていたので、やはり具体的な回答を得ることができませんでした。
自分のPCを疑う
自分のPCでの特殊な設定が何か問題を起こしているのではないか?という疑問は常にありましたが、どうやって調べればいいのか、皆目見当がつかない状態です。
下記はFFFTPの結果です。
----------------------------
FTP over Explicit SSL/TLS (FTPES)を使用します.
ホスト xxxx.wwwww.net (00.00.000.00:21) に接続しています.
接続しました.
接続できません.
## Skt=1300 : Socket closed.
FileZillaは下記のような状況です
----------------------------
状態: flying-h.co.jp のアドレスを解決中
状態: 00.00.000.00:21 に接続中...
状態: 接続を確立しました。ウェルカム メッセージを待っています...
エラー: サーバーによって接続が閉じられました
エラー: サーバーに接続できません
状態: 再試行を待機中...
----------------------------------------------------
八方ふさがりな日々の中、またその事象に会い、今度は、社内の別の人にそのWebサーバーにアクセスしてもらいましたが、やはり、他のPCでもアクセスすることができず、さらに、接続プロバイダーの疑いも視野に入ってくる始末です。
netstatコマンドに出会う
日々色々な角度からChatGPTに問い合わせてみるのですが、なかなか良い回答にたどりつけなかったそんなある日、自分のFTPの接続状況を確認する方法をさがして、単にその接続を強制的に削除すれば良いのではないか?という考えから、「netstat」で自分のPCのポート21番への接続状況を確認する方法にたどり着きました。
このコマンドの実行は、「Windows PowerShell」で行いました。
このコマンドにいくつかオプションをつけて実行しました。
> netstat -ano | findstr :21
TCP/IP通信の状態を調べる「netstat」コマンドに、オプションで、
全件表示の「-a」オプション
IPアドレスなど数値形式で表示する「-n」オプション
各接続のプロセスIDを表示する「-o」オプション
そして、パイプの後にポート番号「:21」を含むテキストのみを表示する絞り込みのオプションを入れて、表示してみたところ
> netstat -ano | findstr :21
TCP 192.168.X.XX:63808 00.00.000.00:21 ESTABLISHED 4984
TCP 192.168.X.XX:63808 00.00.000.00:21 ESTABLISHED 4984
TCP 192.168.X.XX:63808 11.11.111.11:21 CLOSE_WAIT 4984
TCP 192.168.X.XX:63808 22.22.222.22:21 CLOSE_WAIT 4984
上記のような結果です。
全て同じプロセスID「4984」を示しています。そして、接続できないIPアドレス「00.00.000.00」には、二つの「ESTABLISHED」(TCP接続が確立して通信している状態)があります。
そこで、このプロセスID「4984」を「タスクマネージャー」(Windowsでは、下の黒いところで右クリックして表示することができる)の「詳細」タブの「PID」の項目で調べてみると、このプロセス「4984」は、「phpstorm64.exe」だったのです。
つまり、最初の解決方法として、再起動までしなくても、PhpStormの全ウインドウを閉じれば、解決することがわかりました。
少しずつ見えてきた
ここでこの事象は、自分の環境の特殊性もあるかもしれません。
また、下記のような心理的な障害も、課題解決を遅らせた要因かもしれません。
- 常に複数のプロジェクトに対応するため、複数のPhpStormを立ち上げている
- 再起動するのが面倒(常に表示しておきたいSluckやSouceTreeなど複数のアプリケーションがあるため、そのたびに表示処理を行うのが面倒だった)
そして、CPI及びPhpStormに言及したのは、この二つの接続があることで、接続できなくなっているということです。
CPIの接続制限数か?
なぜ、3つめや4つめが可能ではないのか?
PhpStormを立ち上げた状態で、FFFTPを立ち上げれば、二つ目の接続が表示されるが、さらにFileZillaを立ち上げた場合には、FileZillaは接続不可となります。
そして、FFFTPを閉じれば、FileZillaの接続ができるようになります。
もう一つ、以前社内で別のパソコンが接続できなかったことは、全ての接続が、自分のパソコンのローカルIPアドレス「192.168.X.XX」と紐づいているために、他のPCが接続できなかったのではないか?という推測も成り立ちます。
つまり、CPIの接続制限数があるのではないか?という疑問です。
以前、CPIさんにこの接続制限数について問い合わせましたが、非公開であると言われました・・・。
PhpStormの設定か?
FTPが一切できなくなった時は、必ず、同じIPアドレスに対し、2つの接続があり、それが同じプロセス番号、つまり、phpstorm.exeのプロセスに向いています。
上記の2つまでであれば、これをPhpStormが独占してしまっている状態となり、また、その独占により自ら不具合が起きているということです。
大体この事象が起きるのは、PhpStormを立ち上げている状態で、大量のファイルをアップロードをFileZillaやFFFTPで行った後に起こるという体感です。
このアップロード中にPhpStormが接続を維持しようとすることで起きているような気がします。
また、この事象が起き始めたのは、PhpStormの自動アップグレードによる時期的な問題もあるかもしれません。
まとめ
完全解決には至っていませんが、あとは、PhpStormの接続設定などを見直すことで、解消するかもしれないというところまでたどり着きました。
その回答については、いずれ書くかもしれませんが、書かないかもしれません(笑)
ただ、ここまでたどり着けば、自分のPC上の設定で解決できることがわかりましたので、皆様のお役に立てるのではないかと思い、書いてみた次第です。
また、何か変な事象にであえば、書きたいと思います!
文責:フライング・ハイ・ワークス代表 松田 治人(まつだ はるひと)
会社では、Laravelを中心としたエンジニアとして働いており、これまでに50本以上のLaravelによるWebアプリケーションの構築や東京でホームページ制作をしています。
エンジニアとして弊社で働きたい方、お仕事のご相談など、お待ちしております。
WEBサイト制作のお問い合わせ、お見積り依頼、ご質問は
こちらのお問い合わせフォームよりお願いいたします
フライング・ハイ・ワークスの紹介
フライング・ハイ・ワークスは、東京のホームページ制作・Web制作会社・システム開発会社です。東京都及びその近郊(首都圏)を中心として、SEO対策を意識したPC及びスマホのサイトをワンソース(レスポンシブ対応)で制作します。
実績
デザイナーチームは、グラフィックデザインやイラストの制作も得意としており、著作権を意識しない素材の提供が可能です。システム・コーディングチームでは、Laravelなどを使用したスクラッチからのオリジナルシステム開発を始め、WordPressのカスタマイズを得意としております。
また、SEOやランディングページ(LP)、広告向けバナーなどを他社様でやっていた作業の引継ぎでも問題ありません。制作実績は多数ございますので、お客様に合わせたご提案が可能です。
500点以上のフライング・ハイ・ワークスの制作実績ページをご覧ください!
東京のホームページ制作・Web制作のお問い合わせ、お見積り依頼、相談、質問は
こちらのお問い合わせフォームよりお願いいたします