現在Xserverで2台運用しています。
1つはプレミアムプランで、もう一つはビジネスプランです。
プレミアムプランで利用しているサーバー(Aサーバー)ではFTPが正常に利用できます。
しかしビジネスプランのサーバー(Bサーバー)ではカレントディレクトリが見つからないとエラーになり正常にアップロードできません。
接続自体は問題なくできているのですが、BサーバーとのFTPログでは下記のように文字化けしたレスポンスが返ってきます。
550 ã«ã¬ã³ããã£ã¬ã¯ããªã¯ "/testserver.com/public_html" ã§ã: ãã®ãããªãã¡ã¤ã«ããã£ã¬ã¯ããªã¯ããã¾ãã
ソフトはNetBeans12.6を利用しております。
ソフトでのFTP接続設定についてはアカウントとディレクトリ情報以外はAサーバー、Bサーバーに相違がないことは何度も確認いたしました。
同じ内容ファイルでそれぞれにアップロードも試しましたが、Bサーバーだけが正常にアップロードできません。
何かお分かりになることがあればお知恵を拝借させてくださいますようよろしくお願いいたします。
メッセージの先頭に「550」というエラーコードらしきものが確認できるので、550について調べてみるとどちらかが原因のようです。
※サーバーパネルでエラーログが取得できる場合は、内容を確認した方がいいですね。
- アクセス権限
- ファイルシステム
アクセス権限では、アップロード先のディレクトリに書き込み権限がない。
ファイルシステムでは、サブFTPアカウントを使っている場合になりますが、そのアカウントに設定された容量がいっぱいになっている。
以上の2点が考えられるので、ご確認ください。
「Bサーバー」の「サーバーパネル」において、「FTP制限設定」は特に設定していない状態ですか。
文字化け文字列を、もじばけらったのサイト( https://lab.kiki-verb.com/mojibakeratta/) で解読してみました。
もじばけらった使い方ブログ: http://smkn.xsrv.jp/blog/2012/02/mojibakeratta/
上部タブ(「保存される前の文字コードと思われるもの」):ISO-8859-1
下部タブ(「保存された後の文字コードと思われるもの」):UTF-8
で読めるようになりました。
======
string(160) "550 カレントディレクトリは "/testserver.com/public_html" です: そのようなファイルやディレクトリはありません"
======
このエラーメッセージを見る限り、権限とかではなく、ディレクトリ設定などの問題ではないでしょうか。
本件はいまだ解決しておりませんが、原因としては
AサーバーのFTPからのレスポンスには英語記載のみですが、新サーバーとなったBサーバーからは日本語に翻訳されたものがレスポンスされるようになってます。
Aサーバーの場合のレスポンス
入力コマンド: PWD
サーバーからのレスポンス: 257 "/testserver.com/public_html" is the current directory
Bサーバーの場合のレスポンス
入力コマンド: PWD
サーバーからのレスポンス: 257 カレントディレクトリは "/testserver.com/public_html" です
エックスサーバー側の設定で、FTPからのレスポンスを翻訳しないようにする方法がないか、どなたかご存じであればご教示お願いいたします。
むー、まだ解決してしませんでしたか…
内容を拝見した感じでは、
・PWDコマンドで返ってきたワーキングディレクトリをNetBeansが解析し、直後にCWDコマンドで明示的にカレントディレクトリにする(技術面に明るくないため、このCWDにどのような意味があるのかはわかりませんが…)
・NetBeans側ではPWDで返ってきた「文字化けしたもの」の解析がうまくいかず、BサーバーではCWDで存在しないディレクトリを指定してしまっている(ためにエラーが返ってきた)
※「カレントディレクトリは "/testserver.com/public_html" です」というディレクトリ名を指定している
といった感じでしょうか。
FTP接続時のレスポンスが日本語になる可能性としては、
・FTPサーバー側(エックスサーバー側)の言語設定で日本語を指定しているケース
※サーバー側の言語設定によっては、最初から日本語で出力されるようです
・クライアント側の言語設定に引きずられ、FTPサーバーからのレスポンスが標準的な英語であっても、クライアント側で日本語に翻訳されているケース
があるようです。
これまでの内容からすると、「文字化けしたもの」は、
FTPサーバーから「UTF8の日本語」でレスポンスがあった→NetBeans側は「ISO-8859-1」で解釈しようとして文字化けした、
といった流れのように見えるため、前者(FTPサーバー側)に何かしらの原因がある可能性が高そうでしょうか。
FTPサーバー側(エックスサーバー側)の言語設定をユーザーのにゃるさんが変更することはできませんので、この場合は公式サポートに問い合わせ、
・sv●●サーバーとsv■■サーバーでFTPサーバーの言語設定に相違がないか
※マニュアルページなどで触れられている箇所もありますが、エックスサーバーでは契約時期によって、「最新のサーバー環境のサーバー」と「古いサーバー環境のサーバー」が混在しています。
本件も「Aサーバー」と「Bサーバー」の環境が異なる可能性は十分に考えられます。
※こういったものはサーバー番号単位の設定なので、サーバー番号を伝えるほうが調査が早く進みます。
・相違がある場合、★★の環境に統一してもらうことは可能か
などを確認するしか方法はありません。
サポートにも連絡しているのですが、なかなか回答が来ないので独自解決できないかと模索して皆様にご協力いただいた次第です。
とのことで、すでにサポートにも問い合わせ済みだとは思いますが、そちらのやり取りに付け加える形で確認してみるとよいかもしれません。
本件が後者にあたる可能性は低そうですが、Aサーバー用、Bサーバー用でクライアントマシンなどの作業環境(作業用のPC)を分けている場合、NetBeansのFTP機能ではない部分で言語設定などに相違がないかを見てみるとよいかもしれません。
Vindo様
いつもありがとうございます。
Vindo様のおっしゃられているとおりで、
tonio様からお教えいただいた「もじばけらった」でログを全て翻訳したところ、NetBeansでは指定したカレントディレクトリと、PWDで返ってきたカレントディレクトリを比較するようで
CWD /testserver.com/public_html
250 CWDコマンド 成功
PWD
257 カレントディレクトリは "/testserver.com/public_html" です
CWD カレントディレクトリは "/testserver.com/public_html" です
と、PWDで返ってきたパスで再度CWDしようとしてしまっているのが原因かと思います。
たしかにAサーバーについては、エックスサーバーで言うところの旧サーバーで、Bサーバーは最近新たに契約したものなので新サーバーのようです。
filezillaでも確認したのですが、filezillaでもAサーバーでは英語表記でログがレスポンスされ、Bサーバーでは日本語でログが表記されるのでサーバー側の設定の問題かと思っております。
やはりFTPサーバーは単なる1ユーザーでは設定変えられませんよね。。
プログラム開発では海外のオープンソースのエディタを使っている方も多いと思うので、日本語レスポンスは結構問題ありそうな気もするのでなんとか対応してほしいところです。
今回の調査を踏まえて再度サポートには連絡済みで現在回答待ち状態です。
結果については改めてご報告させていただきます。
皆様いろいろとありがとうございました。
とても勉強になりました。
皆様
昨日、エックスサーバーサポートより連絡がありまして、サーバー側の設定の際を確認していただき、サーバーメンテナンスをしていただいた後無事NetBeansでもFTPを利用できるようになりました。
皆様のお力添えのおかげでございます。
また何かございましたらご助力いただけましたら幸いです。
この度はありがとうございました。