Error

[php] GeSHi v1.0.8.4 Compilation failed error on line 2132

2009/07/15 PHP No comments ,

最近WordpressプラグインであるiG:Syntax HiliterのGeSHiを最新のv1.0.8.4にバージョンアップしたんです。
その後しばらくしてサーバーのエラーログ見たらご覧の有様だよ!

これはひどい。

で、ちょっとぐぐってみたら記事を書いている方が居ました。

Not knowing exactly where to start in diagnosing this crazy expression, I simply disabled those “script delimiters” in the geshi/php.php file. The sections I commented out are lines 1080-1101. Now the script delimiters like <?php don’t get highlighted nicely, but I feel that’s a small price to pay for eliminating these errors. Another solution for the WP-Syntax users seems to be to downgrade to 0.9.4. Hopefully in the near future an update to Geshi will come out which fixes this issue once and for all.

つまりこのエラーを止めるには、

  1. geshi/php.phpの1080-1101行をコメントアウトする
  2. GeSHiをver0.9.4にダウングレードする

以上2つの手になると。
sourceforgeにはv1.0.0以上しか見つからなかったから1の方法にしといた。
そしたらHTMLが変換されなくなってたからしかたなくver3.5に入ってるやつに戻した 🙁

[js]Ajax.Requestと405 Method Not Allowed

2008/11/06 Javascript 2 comments , , ,

405エラーは主に、POSTメソッドの使用が許されていない場所で、POSTメソッドを使用した場合に返される。
さくらインターネット等、CGIやSSI等のダイナミックコンテンツにしかPOSTメソッドが容認されていない場合に、
AjaxでXMLHttpRequestメソッド使った時にタイプがPOSTだと405 Method Not Allowedになる。

CGIでも.htaccessにAddHandler cgi-script .cgi などが記述されておらず、
CGIとして設定されていない状態でPOSTで送ると同じエラーになる。

Apache1.3系は静的ファイルにPOSTが使えない。
Apache2系はPOSTもGETも同じ挙動。

解決策
XMLHttpRequestメソッドのタイプをPOSTからGETに変更

※.htaccessでAddHandler server-parsed .htmlとするのは良くない。

(さらに…)

GoogleMap IEだけ出るエラーの原因

2008/02/14 GoogleMap No comments , ,

GoogleMapを入れたページをブラウザで確認したとき、FireFoxやSafari、IE7などではエラーが出ないのに何故かIE6系のブラウザだけエラーを吐くことがある。

主なものは

  • ‘GMap’は宣言されていません
  • ‘G●●’は宣言されていません
  • ‘}’がありません
  • オブジェクトを指定してください
  • ‘return’ステートメントが関数の外側にあります

IE6以下で起きるこれらのエラーは、GoogleMapsを表示してるページの文字コードがShift-jisやEUCだと出ます。
これは表示するファイルの文字コードだけでなく、外部jsファイルの場合も当てはまるので外部jsファイルにgooglemapの関数を作ったときなんかも、文字コードをUTF8にする必要がある。

どうしてもUTF-8に出来ないという場合は、GoogleMapだけ入れたページを別のHTMLファイルに作成して、それをiframeで表示するのが手っ取り早いと思う。

文字コードをUTF8にしてもまだエラーになる。
他のブラウザでは見れるのに…なんて時は、次のポイントをチェックしてみてください。

  • 変数やオブジェクトの名前にエラーを引き起こす名称(classなど)が含まれていないか
    →適当なプレフィック(myClass)を付けたりクォーテーションで囲ったりして変更
  • オブジェクトや配列の最後の要素にカンマ付いていないか
    { 'key' : 'value', } や [ 0, 1, 2, ] は 『識別子、文字列または数がありません。』というエラーになります

※最近エラーに関する検索が多いようなので補足

GoogleMaps API V3はFirefox2やIE6などのレガシーブラウザをサポート対象外としているので、どうしてもエラーが消えない場合はV2を使う方が建設的です。

‘document.body’ は Null またはオブジェクトではありません。というエラーについてはこっちに書いてますが、scriptタグをbody閉じタグ前に移すと直るようです。

スクリプトの書き方が悪くてエラーを引き起こす場合もあります。こちらのGoogle JavaScript Style Guide(和訳)がとても参考になります。

※IEでマップを開くと「インターネットサイトhttp://maps.google.co.jp/を開けません。操作は中断されました」が出る件について補足

2010/10/15くらいから突如出始めたエラーのようです。(世界的に)
エラーが出たり出なかったりしているところを見ると、APIよりもIE側に問題があるように見受けられます。
このセキュリティ更新プログラムを当てたら直ったという報告がフォーラムにあったので引用しておきます。

英語版のフォーラムに情報がありました。
http://www.google.com/support/forum/p/maps/thread?tid=1a59afc1bb60d0c6&hl=en

以下のセキュリティパッチをインストールすると問題が改善されるようです。
MS10-071
http://www.microsoft.com/japan/technet/security/bulletin/MS10-071.mspx

ただし、上記のパッチは、WinXP SP3 用となっているので、 SP2 の人はインストールできないように見えます。
加えて、英語版フォーラムの情報によれば、このパッチのインストール後、いくつかのwebcomponent
(具体的にどんなものかはわかりませんが・・・)が動かなくなったと報告が挙がっています。
言うまでもありませんが、会社のPCに導入する際には動作検証など行なった上で導入してください。