exportDX-v002 でエラー表示  【解決済み】

質問全般・改善要望
返信する
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

exportDX-v002 でエラー表示

投稿記事 by MEGU »

こんにちは。よろしくお願いいたします。

exportDX-v002 をMODx1.0.2jに導入し、実行したところ以下のメッセージが表示されます。

Warning: Call-time pass-by-reference has been deprecated in /home/liolion/evojs.liolion.net/manager/processors/execute_module.processor.php(114) : eval()'d code on line 161

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of exportDir(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /home/liolion/evojs.liolion.net/manager/processors/execute_module.processor.php(114) : eval()'d code on line 287

導入方法は、それぞれのファイルの中身をプラグイン、モジュールにそれぞれ貼り付けました。
何か他にも設定がありますでしょうか。

また、ワーニングを無視して、「エクスポートの開始」を実行すると以下のメッセージが表示されます。

« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 »
SQL: SELECT id, alias, pagetitle, isfolder, (content = '' AND template = 0) AS wasNull, editedon FROM `evojliolion`.`modx6_site_content` WHERE parent = 0 AND

どうぞよろしくお願いいたします。
環境は以下です。

Apache
OS Linux 2.6.31.5-aufs2-grsec-1.0-x86_64-xeon #1 SMP Wed Oct 28 09:35:48 PDT 2009 x86_64
PHPのバージョン 5.2.9
セーフモード off
php_sapi_name cgi-fcgi
MySQLのバージョン 5.0.67-log
MySQLホスト情報 mysql.liolion.info via TCP/IP
mysql_get_client_info 5.0.32
MODxのバージョン 1.0.2J
サイトのURL http://evojs.liolion.net/
MODX_BASE_URL /
upload_tmp_dir
memory_limit 90M
post_max_size 8M
upload_max_filesize 7M
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: exportDX-v002 でエラー表示

投稿記事 by yama »

http://www.google.com/search?hl=ja&q=al ... lr=lang_ja
「you can set allow_call_time_pass_reference to true in your INI file」ってのが気になったのでググってみました

画像
関係ないかもしれませんが、phpinfoのここの値はどうなってますか?

追記
exportDir(0, $export_path, &$n);の&$nを「$n」または「1」に書き換えても問題なさそうな気はします
あと161行目のexportDir($row['id'], $dirname."/", &$i);の&$iも$iかな?
ZeRo
メンバー
メンバー
記事: 9
登録日時: 2009年7月30日(木) 22:31

Re: exportDX-v002 でエラー表示

投稿記事 by ZeRo »

参照渡しの部分である&$nは、とりえず$nのままでも動作に支障はありません。(1とかはまずいので変数としてください)
これは何をしてるかというとシーケンシャルな番号でして、expportDirからさらにexportDirって感じに再帰呼び出しされたりするので参照渡しにすることによりちゃんとインクリメントされていくっていうことになっています。なので、表示の番号がずっと1と2とかになるぐらいになる話。

で、問題なのはDBのエラーの方ですね。
ロジックからするといけそうなんですけど、グローバルな設定値が渡されないみたいな感じでSELECT文が途中で切れてるように思えます。
上のコピペが正しいとするならばそんな感じですね。

DBのバージョンっていうよりPHPのバージョンが最新っぽいので、そこらへんで仕様が変わったのかも・・。

とりあえず、そこらへんについてちょこっとモジュールを改造してみました。
テストしてませんが、お試ししてもらえますか?

カウンタ周りも参照渡しをやめています。

これでワーニングは出ないはずですが、DBのクエリーエラーがでたら教えてください。
添付ファイル
exportdx-mod.zip
モジュール修正倍
(3.74 KiB) ダウンロード数: 438 回
え?
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

yama さん。ZeRoさん。ありがとうございます。

> yamaさん。
allow_call_time_pass_reference Off 
になっています。何か関係するでしょうか。

> ZeRoさん。
添付のmoduleを貼り付けて、実行しましたところ、以下の様なエラーが出ました。

コード: 全て選択

Parse error: syntax error, unexpected '=', expecting ',' or ';' in /home/liolion/evojs.liolion.net/manager/processors/execute_module.processor.php(114) : eval()'d code on line 13
エラー表示だけです。後は白いです。

...なんか私のやり方が違っているような気が。。。
ZeRo
メンバー
メンバー
記事: 9
登録日時: 2009年7月30日(木) 22:31

Re: exportDX-v002 でエラー表示

投稿記事 by ZeRo »

すいません、ミスってました(^^;


改めて修正版をアップしましたのでこちらでお試しください。

一応、自宅鯖で確認してみたので今度は大丈夫なハズ・・・。寝ぼけてなければw
添付ファイル
exportDX.-v003test-module.zip
(3.78 KiB) ダウンロード数: 416 回
え?
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

ZeRoさん。お忙しい中どうもありがとうございます。
エクスポートはエラーなくできるようになりました!ただファイルの接尾辞がついていない状態で、
エクスポートされました。

それと、合体されるテンプレートは、そのドキュメントで使っているものではなくは、グローバル設定の
「デフォルトテンプレート」が適用される。であっていますでしょうか。

すみませんが、どうぞよろしくお願いします。
ZeRo
メンバー
メンバー
記事: 9
登録日時: 2009年7月30日(木) 22:31

Re: exportDX-v002 でエラー表示

投稿記事 by ZeRo »

MEGU さんが書きました:ZeRoさん。お忙しい中どうもありがとうございます。
エクスポートはエラーなくできるようになりました!ただファイルの接尾辞がついていない状態で、
エクスポートされました。
あれ、.htmlとかデフォルトで埋め込まれてるかと思うんですが、その部分はそのようになっています?

えーと、普通のエキスポートの方は動きますでしょうか?

MEGU さんが書きました: それと、合体されるテンプレートは、そのドキュメントで使っているものではなくは、グローバル設定の
「デフォルトテンプレート」が適用される。であっていますでしょうか。
いえ、普通にサイトにアクセスするのと同じ表示になるはずです。
実際のロジックでもURLにアクセスして戻ってきたHTMLを格納します。
ただし、アクセスの仕方がIDつきのGETでドキュメントを引っ張ってくるので、ファイル名はDBのAlias名とPrefixで
作ります。
なので、テンプレートもドキュメントで指定したもので出てくるのが正しいです。
え?
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

ZeRoさん。ありがとうございます。
すみません。うちの環境の根本的な問題っぽいです。
MODx標準のエクスポートを試してみたのですが、フォルダ(コンテナ)しか書き出されませんでした。
allow_url_fopen は、onにて試みました。
質問の内容が違ってきましたので、とりあえず、この質問は、ここでいったん締め切らせていただき、
別にスレッドを立てさせていただこうと思います。

ZeRoさん。お時間とらせてしまい、すみません。
また戻ってくるかも知れませんが。。
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

戻って参りました。
またよろしくお願いいたします。

問題は、以下です。
・接尾辞がつかない状態でエクスポートされる
テンプレートは、デフォルトテンプレートが適用される。(勘違いでした。すみません。。。)
です。
あれ、.htmlとかデフォルトで埋め込まれてるかと思うんですが、その部分はそのようになっています?
はい、.htmlと書き込まれています。
えーと、普通のエキスポートの方は動きますでしょうか?
普通のエキスポートは動きました。。(お騒がせしました)

エキスポート後の画面は、こんな感じです。
次のファイルが削除されました:

* docid_95.pageCache.php

7 個のエクスポート対象リソースが見つかりました...

エクスポートファイル 1個 (1個中)
MODx CMS Install Success, id 1
成功 Skip this document.
エクスポートファイル 2個 (1個中)
メンテナンス中, id 94
成功 Skip this document.
エクスポートファイル 3個 (1個中)
404notfound, id 95
成功 Skip this document.
エクスポートファイル 4個 (1個中)
ホーム, id 97
EXPORT HOST=
成功
エクスポートファイル 5個 (1個中)
リソース3, id 100
EXPORT HOST=
成功
エクスポートファイル 6個 (1個中)
リソース2, id 99
EXPORT HOST=
成功
エクスポートファイル 7個 (1個中)
リソース1, id 98
EXPORT HOST=
成功
ZeRo
メンバー
メンバー
記事: 9
登録日時: 2009年7月30日(木) 22:31

Re: exportDX-v002 でエラー表示

投稿記事 by ZeRo »

えーと、フォーム上ではPrefixの.htmlが入力された状態でエクスポートをしても書き出されるファイル名には、その.htmlがついてないっていう事象ってことでよいですか?

んーー、考えられるとするとエイリアス名に.xxxのように拡張子の指定がされているとprefixを指定していたものを無視して、そのままエイリアス名をファイル名とするようになっているのですが、それぐらいしか思い浮かびません。
もしくは、フレンドリーURLの有効・無効で変わるかもと思ったんですが、どっちも特に変化はありませんでした。

ちなみに、吐き出された情報では特に気になる点としてはEXPORT HOST=の次にエキスポートのホスト名が記述されてなかったんですが、これはわざと消したと思っておいてよいでしょうか?
でなければ、EXPORT HOSTの設定が抜けてるんで、それは別問題ですけど・・・そのぐらいです。

EXPORT HOSTの表示は実はデバックの名残なので、それを取り除いたバージョンを添付しておきます(^^;;
添付ファイル
exportDX-0.03.1test.zip
(4.86 KiB) ダウンロード数: 466 回
え?
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

ZeRoさん。お忙しいところおつきあいいただいてありがとうございます。

一番新らしく添付していただいた「exportDX-0.03.1test」で試してみましたが、結果は同じでした。
えーと、フォーム上ではPrefixの.htmlが入力された状態でエクスポートをしても書き出されるファイル名には、その.htmlがついてないっていう事象ってことでよいですか?
はい。そうです。試しに、「ファイル名の接頭辞:」をつけて、エクスポートしてみましたが、こちらも、接頭辞がつきませんでした。
ちなみに、吐き出された情報では特に気になる点としてはEXPORT HOST=の次にエキスポートのホスト名が記述されてなかったんですが、これはわざと消したと思っておいてよいでしょうか?
いえ。これは、このままの状態です。「EXPORT HOST NAME」のところには、値は入っているのですが。でも、「exportDX-0.03.1test」では、それはでなくなりました。

それともう一つ。エキスポート後の「閉じる」のボタンが動作していませんです。

もう一度ダウンロードし直してやり直してみます。
---*---*---*---*---*---
追記
もう一度ダウンロードしてやってみたのですが結果は同じでした。
また1.0.0jで試したところ、モジュールの実行をした時点でruntime errorが表示されました。
内容は、以下です。
exportDX-v002 - Module runtime error:
An error occurred while loading the module. Please see the event log.
また、0963で試しましたところ、エキスポートはできましたが、1.0.2jの時と同じで、
接尾辞(.html)がない状態で出力されました。
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

1.0.2jでフレンドリURLをoffにしたら、接尾辞付きで出力されました。
もとい。
フレンドリURLがONで、エイリアスパスが「はい」だと、接尾辞がつかず、
「いいえ」だと、「接尾辞」がついて出力されました。
ZeRo
メンバー
メンバー
記事: 9
登録日時: 2009年7月30日(木) 22:31

Re: exportDX-v002 でエラー表示

投稿記事 by ZeRo »

おお、わかりました。
その設定の場合の吐き出すファイル名の生成にミスがあったみたいです。
添付のファイルに置き換えてもらえますか?

フレンドリーURLがONでエリアエスパスが有効になっている場合に起こるみたいです。
添付ファイル
exportDX-0.03.2.zip
(4.9 KiB) ダウンロード数: 426 回
え?
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示

投稿記事 by MEGU »

でーきーまーしーたーっ。
ありがとうございます。
フレンドリURL はい  エイリアスパス はい で、接尾辞付きでエクスポートができました。
ありがとうございます~。

あ、あと、モジュール実行後の閉じるボタンが、動作していません。
ZeRo
メンバー
メンバー
記事: 9
登録日時: 2009年7月30日(木) 22:31

Re: exportDX-v002 でエラー表示

投稿記事 by ZeRo »

すいません、閉じるボタン あれ 意味がありませんでした(^^;

スルーしといてください。
今回の修正をまとめた次のバージョンでは外しておきます。
え?
MEGU
メンバー
メンバー
記事: 39
登録日時: 2009年7月29日(水) 18:05

Re: exportDX-v002 でエラー表示  【解決済み】

投稿記事 by MEGU »

了解です。
どうもありがとうございました。
返信する