XOOPS日本でよく使われているCMSです。Geeklogや、Mambo、Drupalとかあります。 インストールApache 2.0.52 chown -R nobody:nobody xoops/ ではインストールするためにMySQLにXOOPSのユーザを作成しておきます。updateはMySQL4.1を使っている場合です。 create database xoops; grant all privileges on xoops.* to xoops@localhost identified by 'hogepass'; UPDATE mysql.user SET Password = OLD_PASSWORD('hogepass') WHERE Host = 'localhost' AND User = 'xoops'; FLUSH PRIVILEGES; ではブラウザからhttp://hogehoge.hoge/xoops/html/index.phpを開きます。あれ?ログインの入力がないですね。ちょっとログを見てみると、 main(): Failed opening required 'XOOPS_ROOT_PATH/class/template.php' ってでています。どうもMySQL4.1系は対応していないみたいですね。困ったなー では原因を探るためにMySQL4.0.23aをインストールしてみました。するとあっさり動きました。 インストールXOOPS CubeApache 2.0.54 wget http://keihanna.dl.sourceforge.jp/xoops/16357/xoops-2.0.12-JP.tar.gz これをwebrootに展開します。 tar xzvf xoops-2.0.12-JP.tar.gz mv xoops-2.0.12-JP/ xoops 解凍後権限を変えておきます。 chown -R nobody:nobody xoops/ ではmysqlより create database xoops; grant all privileges on xoops.* to xoops@localhost identified by 'hogepass'; UPDATE mysql.user SET Password = OLD_PASSWORD('hogepass') WHERE Host = 'localhost' AND User = 'xoops'; FLUSH PRIVILEGES; ではブラウザからhttp://hogehoge.hoge/xoops/html/index.phpを開きます。あれ?あっさり動きましたね。ん?よくみるとところどころ文字化けしているなー おそらくmysqlの問題ぽい?いや、まずphpをmysql4.0でコンパイルしていたので、まずphpをコンパイルしなおしてみよう。んー違うな。やっぱりmysqlか?ちょっと調査してみます。文字コードを変更したら画面が真っ白になってしまいました。では原因を確かめます。 どうもheader.phpの$bresult =& $block_arr[$i]->buildBlock();で落ちていました。class/xoopsblock.phpを調査します。 $block = $show_func($options);でbidが5のとき、b_system_main_showを実行しようとして落ちています。ではmodules/system/blocks/system_blocks.phpを見てみます。function b_system_main_show()の$modules =& $module_handler->getObjects($criteria, true);で落ちています。ではkernel/module.phpを見て、getObjectsをみてみましょう。 function &getObjects($criteria = null, $id_as_key = false)でSQLを生成しているので、echo $sqlをするとなぜか画面が出てきた。なぜだ?ちなみに今のMySQLは5.0.13-rcで--with-charset=binary --with-extra-charsets=allでコンパイルし、my.cnfはdefault-character-set=ujisにしています。~|-①も入力表示されてました。 ちなみにこれです。http://hidekazu.dhs1.sst.ne.jp/xoops/html/ XFセクション
formmail
multimenu
参考 http://www.xugj.org/modules/manual2/content/index.php?id=4 kernel
class
PHP4.4Only variable references should be returned by reference というエラーが出る場合は、メモリ破壊問題の修正されて、誤った使い方をしているとこのようなNoticeが大量に出力されます... モジュール作成http://xoops.sourceforge.jp/wiki/xoops2/index?TECHのTECH/モジュールの作り方を参考にします。 TIPSgetVarとかkernelのobject.phpにいます。いろいろオプションがあります。 DBの中身を見るinclude_once XOOPS_ROOT_PATH."/class/module.errorhandler.php"; $eh = new ErrorHandler; global $xoopsDB; $sql = "SELECT id,title FROM ".$xoopsDB->prefix("multimenu01"); $result = $xoopsDB->query($sql) or $eh->show("0002"); while ($myrow = $xoopsDB->fetchArray($result)) { echo sprintf("id=%s title=%s<br>",$myrow["id"],$myrow["title"]); } query($sql)はquery($sql,5,0)と書くと0番目から5件取得する。 $num_form = $xoopsDB->getRowsNum($result); で参照 queryのinsertが動かない。select以外は、post等で呼び出したら使える。ただしqueryF()はつかえる。 mailの件名が化ける=?iso-2022-jp?・・・・・・・・・・・・・・となる場合は、class/mail/phpmailer/class.phpmailer.phpのmail_sendの $rt = @mail($to, $this->encode_header($this->Subject), $body, $header, $params); を $rt = @mail($to, '=?'.$this->CharSet.'?B?'.base64_encode($this->Subject).'?=', $body, $header, $params); に変更する。その下も $rt = @mail($to, $this->encode_header($this->Subject), $body, $header); を $rt = @mail($to, '=?'.$this->CharSet.'?B?'.base64_encode($this->Subject).'?=', $body, $header); に変更してPHP 4.3の場合はうまくいきました。ただしPHP 4.4の場合はうまく行きません。試しているのはPHP 4.4.7なのです。そこで、 メールアドレスに.(ドット)が2つ以上続けば、メールが送信されない。class/xoopsmailer.phpのfunction setToEmails?なんですが、ここでif (preg_match(のところではじかれてしまいます。さてどうしようか? contact module でメール踏み台の危険性がある。http://www.sakimura.org/modules/wordpress/index.php?p=285 テンプレートのdb:ってなに?べたに知りたければ、xoops_version.phpを見て、テーブルtplfile、tplsourceを参照。
また普通にやる場合は、管理者メニューの一般設定>テンプレートから編集。
templatesにあるファイルはインストール時にDBに登録される元ねた
5.1 テンプレートシステムの概要 メールを送ったら、ヘッダにいX-Mailerが2つ、MIME-Version2つ付いている。class.phpmailer.phpを見ていると、function mail_sendのmailで付加されちゃっている。しょうがないので、 function create_header()で$header[] = sprintf("MIME-Version: 1.0%s", $this->LE);とかをコメントしてやりました。 すると、X-Spam-Statusのscoreが3つ減りました。 さらにX-Mailerで、PHPとかくっついていると、spamAssassinでカウントされるので、 for($index = 0; $index < count($this->CustomHeader); $index++) の部分もコメントしてやりました。 リンク
参考書籍 |