PHP で Strict Standards のエラー

2012年6月1日金曜日

  ローカルで Xampp を動かして、テスト用に使っています。
  先日、Xampp 1.7.4 を 1.7.7 へバージョンアップしました。含まれるサーバーのバージョンは

XAMPP1.7.4(Apache 2.2.17、PHP  5.3.5、MySQL 5.5.8)
XAMPP1.7.7(Apache 2.2.21、PHP  5.3.8、MySQL 5.5.16)
です。この結果、PHP のエラー
Strict Standards: Declaration of dbTable::create() should be compatible with …
が大量に出てくる。
  調べてみると、PHP 5 から変数の受け渡し方法が変わったそうで、値そのものを渡すか値の置かれているアドレスを渡すかということだそうです。その値の受け渡し方法の違いから予期せぬ結果を招かないために、PHP が確認するようにメッセージを出してくれるらしい。だからこのメッセジを表示しないようにすればいい。
  その設定は php.ini ファイルの 500行目あたりにある
 error_reporting = E_ALL | E_STRICT
の  "E_STRICT" を取ればいい。
error_reporting = E_ALL
Apache を再起動してエラーが発生しない事を確認することができました。

  結果として、これでエラーは表示されなくなりましたが、PHP 5.3.5 と 5.3.8 に大きな変更がないことから、多分コードが古いバージョンで書かれていたのでしょうか。
  因みに、PHP の公式マニュアルには「E_ALL:サポートされる全てのエラーと警告。 PHP 5.4.0 より前のバージョンでは、E_STRICT レベルのエラーは除く。」とあるので、PHP 5.3.x には E_STRICT は 'ALL' には含まれていないようです。

JRuby のインストールでトラブル

2011年9月6日火曜日

JRuby 本家 から JRuby 1.6.4 Binary .zip をダウンロードして解凍後、 PATH を通して、実行した。

  > jruby -v 
インストールできていないのか、
Cannot locate Java installation, specified by JAVA_HOME:C:\Java\jdk1.7.0
が帰ってくる。 JRuby の実行ファイルをダウンロードしたり、jre の同梱版を試したりしたが同じ結果。 PATH を調べてみた。 環境変数のシステム環境変数に
「JAVA_HOME=C:\Java\jdk1.7.0」
を設定して、ユーザー環境変数に
「PATH=%JAVA_HOME%\bin」
としていたのを、システム環境変数に
「PATH=C:\Java\jdk1.7.0\bin」
として再起動して
  > jruby -v 
  > jruby 1.6.4 (ruby-1.8.7-p330) (2011-08-23 17ea798) (Java HostSpot(TM) Client VM.7.0) [Windows XP-x86-java]
と表示されて、うまくインストールできた。

パーティション破損のドライブからファイルを救済

2011年8月28日日曜日

突然再起動がかかり、chkdsk が走りだした。起動はできたが、ドライブの一つが読めない。
「ドライブ X のディスクはフォーマットされていません。今すぐフォーマットしますか?」 と表示される。

二つのハードディスクを使っていて、一方をシステムと基本アプリケーションに使用して、もう一方をデータで使うように3つのパーティションに分けて使っていた。このデータディスクの一つのパーティションがダメになった。
「ディスクの管理」で見ると2つはファイルシステム「NTFS」が表示されているが、問題のパーティションは表示がない。

TestDisk をダウンロードして、修復を行って画面上では問題が無いように表示されるが、リブート後も認識されない。ファイルを取り出すために同梱されている「PhotoRec」の使用も考えたが、ファイル名が無くなるとか、すべてのファイルが取り出されるなどの表示があるので、後の整理が相当大変な様子だったので保留。
 TestDisk で作業中に、コピーというコマンドが出てくるのが気になったので実行してみた。やってみると別のドライブにコピーできました。ファイルごとでもディレクトリー全体でも可能です。

"Analyse"-"Quick Search"-"Deeper Search" の後、パーティションを選んで "p" でファイルをリストアップ。画面の下に
”Use Right to change directory
   q to quit, : to select current file, a to select all files
   C to copy the selected files, c to copy the current file”
と出るので、 を押してコピー先を指定する。ディレクトリーまたはドライブを左右の矢印キーで指定して、ファイルまたはディレクトリーを選んで を押すとコピーされる。
かなりの量のファイルをコピーしたのですが、多くのエラーメッセージがでました。多分これらが原因でパーティションを認識できないのでしょうか、詳細は分かりません(?)。エラー内容は、

"Failed open index allocation attribute. Directory inode 0x・・・・・ is corrupt or bug: Input/Output error."
すべてコピーできたかまだ確認していません。幾つかのファイルを見てみると失くなっているファイルは今のところありません。ちなみに他の2つのパーティションは正常に読み書きできています。

<追加2011.9.3>
やはり幾つかのファイルは見当たりません。特定のフォルダーに集中しているように思います。

Google Analytics Filter 作成

2011年7月4日月曜日

Joomla で作っているサイトに、Google Analytics を設定して、自分からのアクセスをカウントしないようにするために、Filter を設定した。

<!DOCTYPE html>

<html>
<head>
    <title>Analytics Filter</title>
<!-- Google Analytics -->
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-00000000-1']);
  _gaq.push(['_setDomainName', '.abcdefg.com']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script><!-- /Google -->
</head>

<body onload="javascript: pageTracker._setVar('filter_koma');">

<div>Complete!</div>

</body>
</html>
のように作ったファイルをサイトにアップして、アクセスし「Complete!」 を確認する。

サマリー>(analystics を設置したサイト) で「アクション」ー「編集」で「プロファイルの適用したファイル」の「フィルターを追加」で
・フィルタの種類: カスタム フィルタ > 除外
・フィルタ フィールド: ユーザー定義
・フィルタ パターン: filter_koma
・大文字と小文字の区別: なし
「変更を保存」で完了した。

Joomla FCK バージョンアップ

2011年6月25日土曜日

Joomla を 1.5.23 へグレードアップして既存の記事の編集にかかろうとすると何も表示されない。
  エディターの FCK をバージョンアップするように書かれている。
  使用していた FCK は 2.6.4。最新版の JoomlaCK editor 3.4.6 stable をダウンロードした。注意書きに、「旧バージョンを削除するスクリプトが組み込まれていないのでユーザが削除するよう」に書かれている。

Upgrade: Please be aware that there are no upgrade scripts for this version due to a number of important improvements. Users are required to uninstall older versions before upgrading.

  JFCK をアンインストールしてから、.tar ファイルをアップして完了し、正常に表示されることを確認した。