その他
ソフトウェア更新作業後のFAQ
2013年8月22日 00時02分
サーバーでの主要ソフトウェア更新作業後のFAQ
激安プラン/激安Plusプランでは8月20日に、その他のプランでは8月22日(木)にperl、php、rubyなどのソフトウェア更新作業が行われております。
rubyでは大幅なバージョンアップのためお客様設置プログラムでの不具合の発生が予想されますが、perlにおきましても互換性上の問題が生じる場合もあるようです。
お手数ですが設置済みのソフトウェアが動作するか必ずご確認いただきますようお願いいたします。
  • Q1: Can't locate timelocal.pl in @INC ...のようなエラーがCGIで発生してプログラムが動作しない。
    A: timelocal.pl は古いperl4形式のモジュールです。新しいperl5.16では提供されなくなりました。
    たとえば require "timelocal.pl"; は
    use Time::Local;
    に書き換えてください。
    
  • Q2: jcode.plが次のようなエラーを出すようになった。
    defined(%hash) is deprecated at ./jcode.pl line 684.
           (Maybe you should just omit the defined()?)
    

    A: これはdefinedの使い方が間違っていることを指摘する警告です。プログラム自体は動作していると思われます。
    古いjcodeでは if (defined(%hash)) のような記述がありますが、これは誤りでハッシュが定義されているかどうかは if (%hash) で十分です。
    jcode.plにつきましてはサーバーにインストールされているものは新しいバージョンのもので、この不具合が解消しております。お客様がアップロードしたjcode.plの変わりにシステムのものをご利用ください。
    (例)
    require "./jcode.pl";
    require "lib/jcode.pl";
    などは、
    require "jcode.pl";
    に書き換え。
    
    このようにパス名を含まない形に書き換えていただくとお客様がアップロードしたものではなく、システムにインストールされているjcode.plが使われます。
  • Q3: perlで作ったCGIが500 Internal Server Errorで動作しなくなった。エラーログには次のような内容が出力されていた。
    Missing braces on \o{} at xxx.cgi line 349, within string
    
    A: 新しいperlでは \o{...} で8進数をあらわすことができるようになりました。それに伴い、\oの次に{}が無いなど形式に不備があるとエラーとなり、実行が停止します。
    これは元々のプログラムに書き間違いがあったものがperlの新機能によりエラーとして顕在化したものです。
    (例)
     print <<EOM;
     <form method=POST action="\open.cgi\">
     EOM
    
    これは本来 action=\" と書くことを意図したものと思われます(ヒアドキュメントなので本当は"のエスケープは不要です)。
    旧バージョンのperlでは\は無視されて、
    <form method=POST action="open.cgi">
    
    のように表示されますが、新しいperlでは "\open の\o の部分が8進表記と解釈されエラーになります。
    これは本来書き間違いですので、次のように余計な\を削除すれば大丈夫です。
    (例)
     print <<EOM;
     <form method=POST action="open.cgi">
     EOM
    
    \oと似たようなもので、\Nのような記述もありますので、余分なエスケープは削除するほうが無難です。
  • Q4: rubyで作ったプログラムが動作しなくなりました。
    A: rubyは1.8系から2.0系に大幅なバージョンアップが行われております。これは1.8系の開発・サポート終了に伴うものです。
    1.8系と2.0系では一部に非互換な部分や、提供されなくなったモジュール等があるためそのままでは動作しない場合があります。
    お客様で作られたプログラムに関しましては修正をお願いいたします。また、一般に配布されているソフトウェアの場合は、配布元・開発元にご相談ください。
    もし、簡単な修正で動作しないような場合は、当面古いバージョンのruby1.8を残しておきますので次のようにrubyのパス名を書き換えてご利用ください。
    警告:ruby1.8は既にサポートが終了しておりますので、安全上の問題が生じる可能性があります。
    プログラムの修正が完了するまでのあくまでも臨時のものとしてお使いください。
    各rubyスクリプトの冒頭で
    #!/usr/local/bin/ruby
    となっている部分を
    #!/usr/bin/env /usr/local/compat/ruby18/bin/ruby18
    あるいは
    #!/usr/local/compat/ruby18/bin/ruby18
    に書き換えて下さい。
    
  • Q5: erubyのページがうまく表示されません。
    A: ruby2.0ではerubyのご提供は終了させていただきました。当面ruby1.8のものをご利用ください。
    erubyのパスは次のとおりです。
    /usr/local/compat/ruby18/bin/eruby
    
    なお、eruby自体開発が既に行われていないようですので、ruby標準のerbへの変更を強く推奨いたします
    (erbへの変更ではページの改修は必要と思われます)
  • Q6: 自分でインストールしたperlのモジュールが動作しなくなった
    A: cpanコマンドや、コントロールパネルのインストールページからインストールされたperlの追加モジュールはperlのバージョンが変わったため動作しない場合があります。
    その場合はお手数ですが再度インストールしなおしてください。
最新情報 障害情報
ご案内
2024年7月19日 16時04分
対象:全てのサービス
重要なお知らせ
2020年7月1日 11時40分
対象:全てのサービス
重要なお知らせ
2014年3月17日 00時00分
対象:全てのサービス
販売パートナーについて
サイト内検索

▲ このページトップへ