• ベストアンサー

unzip した、cgiが動作しないのはなぜでしょうか?

ファイル数が多いため、zip形式でアップロードして、telnetでunzip。その後、cgiファイルのパーミッションを755にしていますがサーバエラーがでます。 zipにせずそのままアップ場合は問題ありません。 また、不思議なことに、アップしてある、CGIを一度パソコンにダウンロードして、何も手を加えず、ダウロードしたものを、そのままアップロードした場合、正常に動作します。 なぜでしょうか? unzipしたものをそのまま使えないととても不便で困っています。 因みに、現在使っているサーバは、さくらレンタルサーバです。 ご存知の方、何卒、宜しくお願い致します。

  • CGI
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#19175
noname#19175
回答No.2

> ANo.1お礼 > しかし、普通にWindowsからFFFTPのアスキーモードでアップロードした場合は正常で、なぜ、unzipした場合のみ失敗するのでしょうか? FTPソフトが改行コードの調整をしているからです。 圧縮したままでは改行コードの調整は行われずにアップロードされ、そのままサーバー上で解凍することになりますから、不一致が発生します。 unzipで-aオプションを使用すると、 ファイルの種類として't'ラベルがセットしてあると 改行コードやEOFマークの調整をして解凍します。 詳しくは %man unzip を見て下さい。

その他の回答 (2)

回答No.3

FTPがパーミッションを拡張子にあわせて 自動で適切にアップしてくれるからでは? zipから解凍しただけだとそんなパーミッションを 設定されてないからとか

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

スクリプトの改行コードが、Windows系(CRLF)のままになっていて、サーバ上の改行コード(多分UNIX系のLF)と不一致を起こしているのでは。

参考URL:
http://www.vector.co.jp/soft/win95/util/se275159.html
ayaka19801201
質問者

お礼

回答いただきありがとうございます。 無事解決いたしました。 しかし、普通にWindowsからFFFTPのアスキーモードでアップロードした場合は正常で、なぜ、unzipした場合のみ失敗するのでしょうか? なお、このzipファイルは、Windows上で作成したものではなく、 Windowsで作成して、それを、Unixサーバにアップロードして、正常に動作するものを、telnetで圧縮して、それを、解凍したものです。 また、そうなると、unzipで解凍したファイルは、テキストや画像?などのファイルも含めてすべて、LFにする必要があるのでしょうかね? 今まで動作していただけに不安になります・・・

関連するQ&A

  • WebサーバにアップロードしたZIPファイルをunzipするには?

    WebサーバにアップロードしたZIPファイルをそのWebサーバ上でunzipするにはどうしたら良いのでしょうか? unzipすればサーバ管理画面の拡張機能が使えるようになるらしいのですが、その方法を見ると「アップロードしてからunzipする」とあるのです。 ZIPファイルは解凍ソフトで解凍することしか知りませんが、何か特別な行為が必要なのでしょうか? 情報がこれで足りますでしょうか?宜しくお願いします。

  • 自宅サーバでCGIが動作しない

    自宅サーバでCGIを作り動かそうとしているのですが、 「webサイトによってこのページの表示を拒否されました」と出て、CGIが開きません。 いろいろ調べてみて、パーミッションの設定とかが1番それっぽい原因かなとは思ったのですが、 あれってFTPで変更するものですよね? アップロードする気がなくて、これからも自宅サーバで使用したい場合でも、 パーミッションの設定は必要なのでしょうか。その場合、どうやれば設定変更できるのでしょうか? あれってアップロードしたファイルを設定変更するものですよね・・・(私は普段FFFTPを使用しています) アップロードしてないファイルはどうすればいいのでしょうか・・・。 それともこれ以外に原因がありそうでしたらぜひ教えて頂きたいです>< よろしくお願いします!

    • ベストアンサー
    • CGI
  • [Movable type] cgiと静的ファイルを別にインストールする場合

    これまでロリポップのレンタルサーバーに置いていたものを 別のレンタルサーバーに変更しました。 新しいレンタルサーバーでのMovable typeのインストール方法が わからず、カスタマーサポートに問い合わせたところ、以下のような 回答が来ました。 (このレンタルサーバーは、通常は「cgi-bin」「httpdocs」とファイルをわけていれるようになっています。) [回答] ・cgiファイルと静的ファイルは、Movable Type をアップロードされるフォルダの中へ区別せずアップロード ・movable type のインストールディレクトリのパーミッションを777に変更 ・movable type のインストールディレクトリ直下にあるcgiファイルのパーミッションを(644)に変更する ・Movable Type のデータを展開した際に表示される「.htaccess」ファイルを編集「Options ExecCGI Includes AddHandler cgi-script .cgi」 上記のように、「httpdocs」に「mt」を作りすべてアップし、パーミッションも変更しましたが、cgiがエラーになり動きません。 「cgi-bin」「httpdocs」と別れているのに、「httpdocs」にcgiを入れて動くものなのでしょうか? それと、cgiのパーミッションは644で動くのでしょうか? また、「cgi-bin」「httpdocs」と分けておかなければいけない場合は、「MT-4.1-ja」に入っているcgiだけ「cgi-bin」に入れて、あとのものは「httpdocs」の中に「mt」フォルダを作ってその中に全ていれるのでいいでしょうか? よろしくお願いいたします。

  • CGI設置(>_<)

    はじめまして。 rennkaと申します。 CGIの事でお聞きしたい事があるのです。 Tacky's Roomの 『ぷりんぷりんく』→ 自動登録リンクをダウンロードし 設置しようと思い設定を変えたりしているのですが・・・ どうしても403 Forbiddenから抜け出せないのです。 パーミッションの設定が悪いと思い 調べて変えてみるのですが やっぱり403 Forbiddenと表示されます… ちなみに私は無料サーバーで Infoseekのiswebです。 cgi-binフォルダをフォルダを作り そこに全てUPする。 とあるので、UPしているのにもかからわらず 403 Forbiddenから抜け出せない… これってやっぱり パーミッションのせいなんでしょうか? パーミッションの部分をコピーして見ると… public_html(ホームページディレクトリ) #+++ | #+++ |-- cgi-bin(任意のディレクトリ) #+++ | #+++ |-- jcode.pl (755)…(日本語ライブラリ) #+++ |-- pulinpulink.cgi (755)…(スクリプト本体) #+++ |-- pulinpulink.txt (666)…(ログファイル)…空のままアップロード #+++ |-- pulinpulink_bak01.txt(666)…(バックアップファイル)…空のままアップロード #+++ |-- pulinpulink_bak02.txt(666)…(バックアップファイル)…空のままアップロード #+++ |-- ~ #+++ |-- pulinpulink_bakxx.txt(666)…(バックアップファイル)…空のままアップロード ()の中はパーミッションの値 となっています。 分からなくて困っています… 分かる方がいれば教えてください。 お願いします!!!

    • ベストアンサー
    • CGI
  • サーバ移行後CGIが動作しなくなりました。

    困っています。 無料レンタルサーバにCGI(画像掲示板)を設置しているのですが、先日そのサーバで新サーバへの移行作業がありまして、 その作業完了後、CGIが動作せずに"Internal Server Error"になってしまいます。 レンタルサーバのサイトを見てみたところ、 『新サーバーへの移行後、各自CGIのパーミッションの再設定をお願い致します。』 とあったので、パーミッションを以前と同じように修正したのですが、それでも解決されません。 このままでは板の住民の方々に顔向けができません! 何が原因で、解決策はあるのでしょうか。どなたかご返答お願いできないでしょうか(><)

  • Rubyのcgiが動作しません。

    下記のように4行のルビーのcgiを作りました。 ファイル名rb.cgi #!/usr/bin/ruby print <<EOF あああ EOF これをRubyを提供しているapacheサーバにアップロードし パーミッションを777にしました。 文字コードはEUC、改行はLFのみです。 しかし、Internal Server Errorが表示されます。 そこで、サーバにログオンし、このcgiファイルの ディレクトリまで移動し、./rb.cgiを実行すると あああと表示されます。また、このcgiファイルと 同一ディレクトリにあるparlのcgi(掲示板)は 正常動作しています。 どこが間違っているのでしょうか?

    • ベストアンサー
    • CGI
  • FFFTP CGIのデータをアップするとき

    皆さん、いつもお世話になっています。 今、フリーのレンタルCGIをいくつか HPにアップしているのですが ちょっと疑問に思ったことがあります。 私はFFFTPを使ってcgi-binという ディレクトリにファイルをアップロードしているのですが 例えば、「DATA」というフォルダを cgiーbinというディレクトリに アップしたいとします。 ところが、すでに、cgiーbinのディレクトリの 中には、同じ名前の(別のCGI)「DATA」という フォルダがあったとします。 この場合、前者の名前を変えてアップロードしても CGIは機能するのでしょうか? また、その場合、パーミッションの数値は 変わってしまうのでしょうか? この点が、今レンタルCGIを使っていて 最も分からない点です。 どなたか教えてください。

  • 【UNIX】unzip がcron で作動しない

    さくらインターネットのCRON機能で cd (対象ディレクトリ); /usr/local/bin/php -f (phpの名前)コマンドで PHPを自動的に実行しています。 その PHPには system("cd /zipファイルのあるパス/; unzip -Z hoge.zip"); というコマンドが実行されるようになっています。 (本来は、zipの解凍をしたいのですがテスト的にまず、ファイルの内容を表示) このphpを直接ブラウザ上で実行する場合は、うまく動くのですが CRON上で動かした場合は、unzip: not found というエラーが帰ってきます。 また、CRONのコマンド実行フォームにphp実行コマンドではなく、直接 "cd /zipファイルのあるパス/; unzip -Z hoge.zip" を実行しても unzip: not found が出てきてしまいます。 /home/[ユーザー名]/www/・・・と 絶対パスを指定しているので、パスは合っているかと思います。 unzip コマンドを実行するには予め何かを実行しないといけないのでしょうか? 何故、unzip: not found が出てしまうのか アドバイスよろしくお願いいたします。 サーバーOSバージョン FreeBSD 7.1-RELEASE-p16 i386

  • telnet.cgiファイルを作りUPさせたい

    telnet.cgiファイルを作りUPさせたいのですが、うまくいきません。ここで(http://www2d.biglobe.ne.jp/~gama/cgi/list.cgi?telnet.cgi)ファイルをコピーしテキストエディタにペーストし、名前をtelnet.cgiとして保存致しました。サーバーにUPすると、拡張子がtelnet.cgi.rtfとなってしまいます。 いろんなサイトを見ても、このサイトからCGIファイルを作るとなっており、初心者な私には、これでいいのかもわかりません。 どなたかお分かりの方がいらしたら、どうかよろしくお願い致します。

    • ベストアンサー
    • CGI
  • サクラのレンタルサーバーです。CGIが動きません

    サクラのレンタルサーバーを借りました。 早速CGIを試そうと思ったのですが、原因不明のInternal Server Errorが出ます。 cgi-binはいらないとのことですので、wwwにそのまま入れました。 index.htmlも同じ場所にありそれは出ますのでパス間違いではないです。 またパーミッションも777にしてみましたが駄目です。 #!/usr/local/bin/perl print "Content-Type: text/html\n"; print "\n"; print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; こんな感じで、TELNETでログインして実行も出来ます。 bash-2.05b$ ./index.cgi Content-Type: text/html <html><body>abc</body></html>bash-2.05b$ いろいろ調べたのですが ◆パーミッション→OK ◆TELNETで実行してみる→OK ◆perlへのパスは?→/usr/local/bin と /usr/bin どちらでもいいそうです。験しに変えましたが状況変わらず。 何か気が付いたことがあれば教えてください

    • ベストアンサー
    • CGI

専門家に質問してみよう