サイトを運営する際のFAQ
提供: GeeklogJpWiki
FAQ( インストール前|インストール時|インストール後|構築時|運営時|Tips|その他)
サイトを運営する際のFAQ
Q.この記事 ID は既に使用されています。と表示されます
記事を編集して「この記事 ID は既に使用されています」が表示されます。
<回答>
このメッセージが表示されたら,他の記事で同じ記事 ID を使っているので、他のIDに変更して保存してください。
Geeklog は,記事 ID として特定の文字しか受け付けないことも注意してください。使える文字は、アルファベットの大文字・小文字,数字,ピリオド(.),ハイフン(-),下線(_)です。不正な文字はみな ID から削除され,その結果,新しい記事 ID が他の記事で使用されている ID とダブってしまう可能性があります。
Q.ローカルの MySQL サーバーに接続できません
次のようなエラーが表示されます。 Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' in /path/to/geeklog/system/databases/mysql.class.php on line 112 Cannnot connect to DB server
<回答>
エラーメッセージ通りに, Geeklog は MySQL サーバーに接続できなかったということです。
典型的な例としては,MySQL サーバーが動いていないか, config.php 内の $_DB_host の設定が正しくないかです。
$_DB_host に MySQL サーバー名が設定されているか確認してください。これでだめなら,MySQL サーバーが本当に動いているか確認してください。自分で MySQL サーバーを動かしているのでなければ,ホスティングサービス会社に問い合わせた方がよいでしょう。
Q.記事を編集/作成できません
<回答>
設置条件を調査して、phpの環境を変更してください。
次にチェックするのは php.ini で file_uploads を on としているかです(繰り返しになりますが,設定を変えたら,Web サーバーを再起動してから,もう一度試してみてください)。
これでもだめなら,サーバーの設定で解決されていない問題があるということになります(PHP 自体のバグの場合もあります)。現時点で知られている唯一の回避方法は,管理者の記事エディタのテンプレートファイル (layout/YourTheme/admin/story/storeditor.thtml)から, enctype="multipart/form-data" を取り除くことです。変更後は記事中で使用する画像ファイルをアップロードできなくなりますが,記事の編集/作成はできるようになるはずです。
Q.ゲストユーザの記事投稿を、ルート管理者でなく、記事管理者が編集したい
<回答>
ゲストユーザの記事投稿は、config.phpの設定で、所有者(投稿した本人)しか編集できない設定になっています。また、投稿の際に、パーミッションを設定して投稿できません。そのため、記事と話題の管理者がその記事を承認しても、記事と話題の管理者が編集できず、ルート管理者しか編集できません。ゲストユーザが投稿したものをルート管理者だけではなく、記事管理者も編集できるようにするためには、config.phpで、デフォルトを以下のように変更してください。
$_CONF['default_permissions_story'] = array (3, 3, 2, 2);
リンク投稿などすべてのコンテンツで、同様です。ルート管理者が中心の管理でなく、各細分化された権限のユーザが管理するのが中心であるのなら、全般的に、array (3, 3, 2, 2); を指定しておきます。
Q.携帯ハックで掲示板(旧バージョン)の書き込みで文字化けする。改行変換設定もできない。
携帯ハックをしたが、携帯から掲示板の書き込みで文字化けします。
掲示板>設定>改行変換 の部分を「はい」にして、「変更を保存」しても、次に、ふたたび、「設定」を開くと、「いいえ」に戻ってしまいます。また、register_globals off に設定すると、掲示板が動きません。携帯ハックを行っても、掲示板からの書き込みで文字化けします。
<回答>
掲示板プラグインをGeeklog日本語版標準パッケージ(20061121版)以降に差し替えてください。本体も差し替えるか、あるいは携帯ハックをおこなうと、携帯からのアクセスも可能になり、設定エラーも解消します。
また、.htaccessの設定で、register_globals Offを指定してより安全にサイトを運営できます。track_vars Onもあわせて設定します。
php_flag register_globals Off php_flag track_vars On
Q.ゲストユーザがGeeklogを編集できない設定にする
ログインしないゲストユーザからの書き込みを受け付けたくない場合はどう設定したらよいでしょうか?
<回答>
- config.phpで "submitloginrequired", "commentsloginrequired", "comment_code" を '1'にセットします。
- config.phpで, "disable_new_user_registration" を 'true'にセットします。"新規登録" へのリンクをサイトから隠したとしても、ページにURL指定で直接アクセスされれば新規登録されてしまいますが、その機能を不可にするために大変重要です。 新規登録の無効化により, 新規登録ページは無効になり、管理者が管理者画面で作成する以外、新規ユーザを登録できなくなります。サイトへの書き込みのみ許可したくないというだけであれば、'false'のままにしてください。
- もし、ユーザの新規登録を許可しておきたいのなら、コンテンツへのアクセスに対してユーザ登録とログインが必要であることを記事または静的ページに記述して案内しておくとよいです。
参考:ログインブロックを隠したい
Q.ログインブロックを隠したい
ログインするのは管理者グループだけで、一般ユーザはログインしないので、画面からログインブロックを隠したい。
<回答>
ログインブロックをブロック管理者画面でゲストユーザ、メンバーへは非表示にします。ログインした、管理者グループだけはログアウトするため、ログイン後は表示させておく必要があります。つまり、ユーザ管理ブロックは、ゲストユーザにのみ閲覧させない設定にして、ログインユーザには許可しておきます。
設定方法は,ブロック管理画面で,「ユーザ情報」ブロックを編集し,「パーミッション」の「ゲストユーザ」のチェックをはずして保存します。
ログインのURLは、/users.phpです。
Q.記事や静的ページをアドバンストエディタを利用して編集したい
記事や静的ページをHTMLタグを使わないでビジュアルに編集したい。サイト運営者は、ウェブの開発者でないので、できるだけ簡単な操作で運営したい。
<回答>
初期設定ではアドバンストエディタを利用しない設定になっています。
記事の編集画面で、多くのモードや設定の項目があり、初心者にはわかりにくい構成かもしれません。
そのようなときには、コンフィギュレーションエディタプラグインで、アドバンストエディタを使うモードに変更します。Geeklogでは、アドバンストエディタとしてFCKEditorを利用できます。
注意
静的ページでPHPコードを記述する際には、このモードは利用できませんのでその際には、このモードを使わないモードに戻してください。
Q.ブロックに自由なHTMLを記述したい
<回答>
ブロック管理画面でブロックを新規作成して、ノーマルブロックのモードにしてHTMLを記述してください。
公式ブロックとして提供しているユーザ情報ブロックのカスタマイズなども、自由なHTMLを記述することで手早くカスタマイズできます。ブロックのパーミッションを設定して必要なときに、必要なユーザにのみ表示できるようにします。
Q.ヘッダメニューの順番と表示・非表示設定を変更したい
<回答>
コンフィギュレーションエディタで、順番と表示・非表示を変更できます。
あるいはテーマエディタでheader.thtmlを編集して、メニュー変数{menu_elements}の代わりに必要なメニューをHTMLで記述します。
Q.GoogleMapsAPIを利用して地図コンテンツをつくりたい
HTMLを静的ページに貼り付けるだけでは、IEで表示されない。
<回答>
GoogleMapsAPIはGoogleが無料で提供している便利な地図表示システムです。
特に、GoogleMapsEditor(http://hsj.jp/gme/)は画面操作だけでGoogleMapsAPIを利用できるHTMLを自動作成します。
チュートリアルで、操作方法を確認できます。
作成したHTMLは現在静的ページにそのままHTMLコードをペーストして動かすことができるはずですが、FireFoxでは動作するものの、IE(IE6, IE7)で表示されません。そのため、以下の手順で表示させます。
- GoogleMapsEditorで作成したHTMLファイルをサーバの適当なディレクトリにアップします。
- Geeklogの静的ページなどで、IFRAMEタグを利用して、HTMLファイルを読み込んで表示させます。
なお、Google Maps API Keyを設置するURLを指定して取得する必要があります。
GoogleMapsEditorで、Google Maps API Keyの取得画面でHTMLをアップするディレクトリを指定して、HTMLを作成してください。
静的ページで、左右のブロックを表示しないモードで作成するとよいでしょう。
設置事例:
- Geeklog Japanese: http://www.geeklog.jp/staticpages/index.php/access
- 平野区歯科医師会: http://www.hirano-shika.com/staticpages/index.php/shikamap
Q.WEBブラウザで実行できるPHPは?
Geeklogで提供しているWEBブラウザで実行できるPHPにはどのようなものがありますか?
<回答>
Geeklogを表示する際、ブラウザのURLの欄を常に注意してみて起きましょう。そうするとその表示がどのPHPソースにより動いているかわかるでしょう。主なものを紹介します。
ユーザシステム
- ログイン /users.php
- ログアウト /users.php?mode=logout
- アカウント新規作成 /users.php?mode=new
- アカウント情報編集 /usersettings.php?mode=edit
- ユーザ情報 /users.php?mode=profile&uid=(ユーザID)
- ユーザ設定 /usersettings.php?mode=preferences
- パスワード再設定 /users.php?mode=getpassword
投稿
- 記事投稿 /submit.php?type=story
- ファイルアップロード /filemgmt/submit.php
- リンク申請 /submit.php?type=links
コンテンツ
- 各話題 /index.php?topic=(話題ID)
- 各記事 /article.php/(記事ID)
- カレンダー /calendar.php
- 記事一覧 /directory.php
- FAQ /faqman/
- 掲示板 /forum/index.php
- ダウンロード /filemgmt/index.php
- リンク /links/index.php
- アクセス情報 /stats.php
- アンケート一覧 /polls/index.php
- 個々のアンケート /polls/index.php?qid=(アンケートID)&aid=-1
ブロック管理画面
- ブロック管理 /admin/block.php
※ブロック管理画面で、管理ブロックを間違って非表示にすると、管理者メニューブロックが表示されませんが、管理者としてログインした後このURLを直接指定することで、表示することができます。管理者メニューブロックを有効に戻してください。
Q.管理者ブロック表示をまちがって削除したのを復活したい
<回答>
ブロック管理画面で、管理ブロックを間違って非表示にしてしまうと、管理者メニューブロックが表示されなくなります。そうなると管理者が、管理者メニュー画面にアクセスできないという事態になりますが、管理者としてログインした後以下のURLを直接指定することでブロック管理画面を表示させることができます。こ管理者メニューブロックを有効に戻してください。
ブロック管理へのURL: /admin/block.php
Q.サイトの管理などをSSLで行いたい
SSLと両方でおなじGeeklogのデータベースのテーブルを参照して運営したい。
<回答>
よりセキュアに運営したいのであれば、管理者メニューへSSLでアクセスする必要があります。これでブラウザに表示されるユーザ情報などが悪意のある第三者によって盗聴される心配がなくなります。
SSLでアクセスするためには、Geeklogのpublic_html以下のソースファイルをSSLの領域へアップします。
非公開領域のソースファイルは非SSLサイトと同一のソースファイルを参照しますが、config.phpは例えばconfig_ssl.phpをSSL用に作成してconfig.phpと同じフォルダに置いてください。
SSLサイトがconfig_ssl.phpを参照するように、SSLのWEB領域にアップするlib-common.phpはconfigへのリンク先ファイル名をconfig_ssl.phpに修正します。
以上の設定で、SSLでも同様にアクセスできるようになり、よりセキュアに運営できます。
Q.簡単なステップでできる検索ページを作成したい
<回答>
Geeklogには大変複雑な検索機能が標準で用意されていますが、実際の利用では、検索できる条件を必要最小限に留め、不要な検索条件選択欄を削除して別のURLで、あるいは個別のブロック、個別の静的ページに表示されて、検索条件が限られていたほうがユーザインタフェースが向上します。
検索できる条件をはずすのは簡単です。
検索のフォームを、検索条件を必要最小限にして、隠したい条件はHIDDENでパラメータをわたすことで見かけ上、非常に単純な検索となります。
ブロックに表示したければあらたにブロックを作成してフォームを記述します。中央のエリアに表示したければ、静的ページを作成してフォームを記述します。
検索結果のテンプレートを変更したければ、該当するテンプレートファイルを修正するだけです。
検索の種類によってテンプレートを変えたいのであれば、アプリケーションを開発しますが、アプリケーション開発は簡単です。標準で提供されているsearch.phpをコピーして、参照するテンプレートファイル名の個所を変更し、あらたなテンプレートファイルを用意するだけです。
Q.comment.php のエラー(gl_comments をロックできません)
<回答>
と表示された場合,次のようなメッセージが your error.log に見つかるでしょう。
考えられる解決策
- ホスティングサービスの環境: ホスティングサービス会社に「 LOCK TABLE 権限が欲しい」と言うか,他の会社に乗り換えてください。言葉を濁したり,XXX の理由で設定できないと言うホスティングサービス会社もあるでしょうが,それは真実ではありません。ほとんどのホスティングサービス会社はこの権限を提供しています。
- データベースレベルの権限を与えられる MySQL の管理者権限を持っているなら(ふつう, MySQL の root ユーザーである必要があります),次の SQL を使用して LOCK TABLE 権限を与えてください。
GRANT LOCK TABLES ON <database_name>.* to <user>@<host>
- system/lib-comment.php(より初期の Geeklog のバージョンでは comment.php) から, "LOCK TABLE" と "UNLOCK TABLE" を含む SQL を全て削除してください。アクセスが少ないサイトではこれで OK のはずですが,複数のユーザーが同時にコメントを保存したり削除したり場合,データベースのファイルが破損する可能性が生じます。
- MySQL を MyISAM から InnoDB にアップグレードする。 admin のディレクトリにこれを行うスクリプトがあります。 system/lib-comment.php を開き, "LOCK TABLE XXX" を全部 "START TRANSACTION" に, "UNLOCK TABLE XXX" を全部 "COMMIT" に変えてください。この方法の唯一の欠点は,十分なテストが行われておらず, InnoDB テーブルにしか効果がないということです。
参考:
Q.エラーメッセージが出る(An SQL error has occurred. Please see error.log for details.)
<回答>
error.log は,非公開領域に設置した/logs/ディレクトリの中に作成されていますので,それをダウンロードしてみてください。
また,詳しいエラーメッセージを表示するため,一時的にコンフィギュレーションで
$_CONF['rootdebug'] = true;
に変更してデバッグメッセージを表示させてみてください。
ログにgl_session など、tableが壊れているというメッセージがあれば,
REPAIR TABLE gl_sessions;
などをphp My adminで実行するだけで復旧できます。 あるいは、テーブルを指定して、修復を実行してください。