1.0.6J-r8ベータです

プログラム(機能)関連の開発の話題
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

1.0.6J-r8ベータです

投稿記事 by yama »

明日リリース予定の1.0.6J-r8のベータ版を配布します。
基本的には全体的に不具合修正ですが、getAllChildrenなどサブリソース情報を取得するAPIに関しては大幅に処理を見直しているため注意が必要です。
添付ファイル
106J-r8-b3.zip
(1.55 MiB) ダウンロード数: 512 回
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

画像
ベータ4です。管理画面の雰囲気が微妙に変わります。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

-----
ご利用のサーバ:CLARA VPS Solo
MODXのバージョン:1.0.6J-r8b2 → 1.0.6J-r8b4
PHPのバージョン:5.1.6
MySQLのバージョン:5.0.22
-----

1.0.6J-r8b2をインストールした、この↓サイト
http://forum.modx.jp/viewtopic.php?f=7&t=966
で、
1.0.6J-r8b4にアップデートしようとしたところ、
インストールオプションの選択画面で、フォーム最上部に以下のエラーメッセージが表示されました。
An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='
フェータルなのか、警告なのか、ちょっと判断に迷ったので、この状態で置いてあります。

インストールオプションの選択画面自体は機能しているようにも見えます。
前回インストールしなかった、テンプレート「xRay 」、テンプレート変数「キーワード」と、
おそらく今回追加された?プラグイン「ダッシュボード・あなたの情報 」「ダッシュボード・オンライン情報」「管理画面カスタマイズ」が、
選択肢として表示され、
「戻る」「進む」ボタンも表示されています。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

ありがとうございます。システムには含まれない文字列なので、たぶんサーバから返ってきたのを出力してる感じですね。調べてみます
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

https://www.google.com/search?sourceid= ... collations
これですね。クララさんのサーバならありそうです。
そのエラーの内容をHTMLソースで一部でよいので教えていただくことはできますでしょうか?前後のHTMLソースを見合わせばどの部分で問題の処理を行なっているか分かりますので。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

該当箇所前後のHTMLは以下になります。

コード: 全て選択

<body >
<!-- start install screen-->
<div id="header">
	<div class="container_10">
		<span class="help"><a href="http://modx.jp/docs/install.html" target="_blank" title="インストールで困ったらこのページを見てください">Help!</a></span>
		<span class="version">MODX Evolution 1.0.6J-r8b4 (2012/10/26)</span>
		<div id="mainheader">
			<h1 id="logo"><span>MODX CMS</span></h1>
		</div>
	</div>
</div>
<!-- end header -->

<div id="contentarea">
    <div class="container_10">        
        <!-- start content -->
        <div id="content">
<form name="install" id="install_form" action="index.php" method="POST">
<input type="hidden" name="action" value="summary" />

An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='An error occurred while executing a query: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (ujis_japanese_ci,COERCIBLE) for operation '='<h2>インストールオプションの選択</h2><p><b>オプションを選択してください</b><br /><b>【アップデート時の注意】</b> プラグインに関しては、インストール時に既存プラグインを無効にします。他のエレメントに関しては別名でインストールします。</p><hr /><h4>拡張機能の選択:</h4>
    <p class="actions"><a id="toggle_check_all" href="#">全て選択</a> <a id="toggle_check_none" href="#">全ての選択を解除</a> <a id="toggle_check_toggle" href="#">選択状態を反転</a></p>
	<br class="clear" />
	<div id="installChoices"><h3>テンプレート</h3><br /><label><input type="checkbox" name="template[]" value="0" class="toggle demo" checked="checked" /> <span class="comname">xRay</span> - <strong>1.1</strong> 「xRay」学習用途向きのシンプルなテンプレート</label><hr />
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

コード: 全て選択

function_exists('mysql_set_charset')
を試してみたところ、
この環境ではfalseでした。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

試しに「install/setup.info.php」のDB接続後に

コード: 全て選択

@mysql_query('SET CHARACTER SET "utf8"', $conn);
を入れてみたら、
先のエラーはでなくなりました。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

おー、、、なるほど orz
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

ざっと見た感じ、

コード: 全て選択

if (function_exists('mysql_set_charset'))
{
	mysql_set_charset('utf8');
}
のような箇所が何箇所かあるようですが、
意味を考えると

コード: 全て選択

if (function_exists('mysql_set_charset'))
{
	mysql_set_charset('utf8');
}
else
{
	mysql_query("{$database_connection_method} utf8");
}
のような感じになるはずだったのかな?という気がします。

ちなみに、
「install/setup.info.php」修正後、
インストールオプションの選択肢のプラグインに、
「ダッシュボード・あなたの情報 」「ダッシュボード・オンライン情報」はでなくなりました。
きっと、プラグイン名が日本語だったので、誤判定してたんでしょうね。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

mysql_set_charsetは基本的に必要なんですが、使えない環境が時々ありますね。この関数を使えないとエスケープ処理の過程で文字化けが発生する可能性があるので、今のEvoでは元がujisなどである場合を除いてテーブルをutf8固定で作ることにしています。でも接続時にSET CHARACTER SETが抜けると場合によっては化けるので、mysql_set_charsetを実行するしないに関わらずほぼ必須と考えてよいと思います。(という解釈でたぶん合ってると思います)

ちょっと気になるのですが、SET CHARACTER SET utf8ではなくSET NAMES utf8だとどうですか?さっき別のテスターさんから連絡があって、そのサーバではSET NAMESでないと化けるようです。経路がutf8で統一されていれば(現状、されてます)よく言われる脆弱性の問題はクリアできるので、これも検討してみたいです。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

'SET CHARACTER SET utf8'を'SET NAMES utf8'に変更して、
そのまま、同じバージョンでもう一度アップデートを行いました。

インストールオプションの選択画面ではエラーは起こりませんでした。

ただし、
最後の「インストールを実行しました。」の下に
「Duplicate…(8)」というエラーが出て、管理画面のログインがロックされました。
もしかして、
プラグイン「管理画面カスタマイズ」を追加する処理で、
なんらかの不具合が出たのでしょうか?

その後、同じように、何度かアップデートを行なっても再現はしませんでした。
'SET NAMES utf8'を'SET CHARACTER SET utf8に戻したりもしましたが、何も起こりません。

プラグイン「管理画面カスタマイズ」(新バージョン)のidは9で追加されています。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

管理画面で以下の警告が出ますが、具体的にはどうすれば良いのか、ちょっとわかりにくい気がします。

警告 管理画面テンプレートファイルの拡張子

管理画面テンプレートファイルの拡張子は「tpl」を認識する仕様になりました。バージョンアップによりカスタマイズが反映されなくなった場合は、
assets/templates/manager/ディレクトリ内のテンプレートファイルの拡張子をtplに変更するか、プラグインでカスタマイズ(同梱の管理画面カスタマイズプラグインを参照)してください。カスタマイズの必要がない場合は、このディレクトリを削除してください。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

拡張子は実際のところtplでもhtmlでもいいと思うので、その部分の判定を外すと説明文がすっきりしますね。
どっちかというと、ここにシステム関係のファイルを置かないほうがよいというのが要点なので、調整してみます。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

コード: 全て選択

mysql_query("SET CHARACTER SET 'utf8'", $conn);
if (function_exists('mysql_set_charset'))
{
	mysql_set_charset('utf8');
}
else
{
	mysql_query("SET NAMES 'utf8'");
}
こういうふうにするとよいのかな?と思ったのですが、順番次第では意味がなかった気がします。
たしかmysql_select_dbの実行タイミングがポイントだったと思います。もう少し調べてみます。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

コード: 全て選択

$conn = mysql_connect($database_server, $database_user, $database_password);
mysql_select_db(trim($dbase, '`'), $conn);
mysql_query("SET CHARACTER SET 'utf8'", $conn);
if (function_exists('mysql_set_charset')) {
	mysql_set_charset('utf8');
}
else {
	mysql_query("SET NAMES 'utf8'");
}
試してませんがたぶんこの順番ですね。SET NAMESなんてもうほとんど使わないものと思ってましたが。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

$_lang["configcheck_mgr_tpl_msg"] = 'assets/templates/manager/ディレクトリの使用は1.0.6J-r8以降は推奨されなくなりましたので、ディレクトリごと削除してください。すでにカスタマイズを加えて使用している場合は、同ディレクトリ内のファイルの拡張子を「.tpl」に変更し、manager/media/style/テーマ名/template/ディレクトリに上書きしてください。';
まだ少しくどい感じですが、これでまとめてみます。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

ベータ5です
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: 1.0.6J-r8ベータです

投稿記事 by kazuike »

-----
ご利用のサーバ:CLARA VPS Solo
MODXのバージョン:1.0.6J-r8b2 → 1.0.6J-r8b5
PHPのバージョン:5.1.6
MySQLのバージョン:5.0.22
-----

以下、両方試してみました。
・スナップショットを使って1.0.6J-r8b2の時に戻してから、1.0.6J-r8b5にアップデート
・DB、ファイルを削除し、1.0.6J-r8b5を新規インストール

とりあえず、現時点でわかったことを報告しておきます。

▼グローバル変数「$manager_inline_style」追加

manager/includes/header.inc.php
で、
グローバル変数「$manager_inline_style」の使用が追加されているにかかわらず、、
「global $manager_inline_style;」の宣言が無いため、
既存のモジュールは、
モジュールコードに「global $manager_inline_style;」を追加しないとエラーになります。

▼非suEXEC環境での「.htaccess」

「.htaccess」については、
「install/tpl/htaccess.tpl」を持ってきて、
リネームして使うしかないですね。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r8ベータです

投稿記事 by yama »

なるほどですね。global変数をあまり増やすのも作法がよくないと思うので$modx->config['manager_inline_style']で差し替えてみます。

慣れた人には今の.htaccess設定の扱いは分かりにくいですね。IIS対応など少し理由があってこの方法にしてますが、文言を工夫するなど考えてみます。
返信する