IT家・挑戦雑記

情報を制する者は世界を制す!

★スクリプト概要
サーバーが及びネットワークがちゃんと動作しているか、
メールにてレポートする。
※あくまでメール送信できた際に、メールがちゃんと送信できている事を確認するだけの簡易的かつ限定的な機能。

★環境(テスト済み)
 ・CentOS 5.5
 ・bash

★その他
 ・使用するならcronを使う必要有り

★スクリプト内容
#—————————————————————-#
# +ユーザ環境(要変更)
#—————————————————————-#

#送信先メールアドレスを設定
address=”mail@exsample.com”

#—————————————————————-#
# +処理部分
#—————————————————————-#

# 件名の文字コードをutf8に変換
# nkfコマンド http://it.kndb.jp/entry/show/id/744
subject=`echo svr_report | nkf -j`
msg=”date +””%Y-%m-%d_%I:%M:%S”””

# メール送信(コマンド結果はSJISに変換)
mail -s “$subject” $address << HONBUN
`$msg | nkf -w`
`echo "server is Green!" | nkf -w`

HONBUN

exit

WordPressを利用していると
このページにアクセスするための十分なアクセス権がありません
と怒られてしまうケースがあります。

私の場合、システムログイン後にこのメッセージが出ました。

その状況や原因を以下にて解説します。

━━━━━━━━━━━━━━━━━━━━━━━━━
★状況
 ・テーブルのprefix名を変更

 DBテーブルとwp-config.phpのprefix名を変更した際、
 WordPressで管理画面にIDとパスワードを入力してログイン後、
 「このページにアクセスするための十分なアクセス権がありません」
 とうい警告メッセージが表示される。
 ※管理画面で操作不可
 ※ブログ閲覧は問題なし

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.3
    ・WordPress 3.01
   ・Apache:2.2.3
   ・MySQL:5.1.50-1

 ◆WordPressのテーブル一覧(全11テーブル)
  1: (prefix名)_commentmeta
  2: (prefix名)_comments
  3: (prefix名)_links
  4: (prefix名)_options
  5: (prefix名)_postmeta
  6: (prefix名)_posts
  7: (prefix名)_terms
  8: (prefix名)_term_relationships
  9: (prefix名)_term_taxonomy
  10: (prefix名)_usermeta
  11: (prefix名)_users
  ※(prefix名) ・・・ ユーザ指定のprefix名

★原因
 ・DBのテーブルprefixの変更が不十分

★解決
 テーブルprefix名を変更する際には、
  ・DBのテーブルprefix名を変更
  ・wp-config.phpのprefix名を変更
  ・以下の2テーブル内に存在するprefix名を変更
   1.(prefix名)_usermeta ・・・ フィールド:meta_key
   2.(prefix名)_options ・・・ フィールド:option_name

写真を管理できるCMS「Phormer
これをインストールしてみましたのでインストール方法を紹介します。


★配布サイト
 ・http://p.horm.org/er/
 ・最新バージョン:3.33 ※10.08.29現在

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.3
    ・GD extension
    ・ZIP extension
    ・EXIF extension
   ・Apache:2.2.3
  ※本システムはDBを使用しません。

★インストール方法

Installation Process - Google Chrome 20100829 170656

インストール先のパーミッションが正しくない場合、あるいは上記の3つのPHP extensionがない場合には警告がでますのでインストール・パーミッション設定を行います。
また、必要なディレクトリを作成し、そのパーミッションも設定します。

◆PHP extensionのインストール
  ・GD extension
  ・ZIP extension
  ・EXIF extension

◆ドキュメントルートのパーミッション設定
 chmod 707 ドキュメントルート

◆手動で「data」「images」「temp」のディレクトリ作成
 mkdir data images temp

◆作成したディレクトリのパーミッション変更
 chmod 707 data images temp

◆index.xmlのパーミッション変更
 chmod 606 index.xml

Installation Process - Google Chrome 20100829 211032

Adjust Preferences of My PhotoGallery - Google Chrome 20100829 212644

Administration Region of マサの写真館 - アナザー - Google Chrome 20100829 212655

サイト名等を設定します。
日本語名を使用する際には、ドキュメントルートに以下の.htaccessを設置します。

■.htaccess

<ifmodule mod_php5.c>
  AddDefaultCharset UTF-8
  AddType "text/html; charset=UTF-8" .html .php

  php_value default_charset UTF-8
  php_value mbstring.language neutral
  php_value mbstring.internal_encoding UTF-8
  php_flag  mbstring.encoding_translation On
  php_value mbstring.http_input auto
  php_value mbstring.http_output UTF-8
  php_flag mbstring.encoding_translation Off
  php_value mbstring.substitute_character none
</ifmodule>

マサの写真館 - アナザー - Google Chrome 20100829 215850

これで設置は完了です。

★状況
 WordPressで記事を投稿した際に、相手サイトにトラックバックができない。

★環境
 ◆サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.2
    ・WordPress 3.0
   ・Apache:2.2.3

★原因
 ◆トラックバックの際のタイムアウト(時間制限)
  ・デフォルトでタイムアウトが0.01秒と短めに設定されている。
  ・重たいサーバーの場合、トラックバックに失敗する可能性が高くなる!

★解決
 ◆以下のphpを書き換える
  ■対象php
   /wp-includes/cron.php
  
  ■対象箇所
   「cron.php」の234行目付近
    ▲修正前
     wp_remote_post( $cron_url, array(‘timeout’ => 0.01, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
    
    ▲修正後
     wp_remote_post( $cron_url, array(‘timeout’ => 3, ‘blocking’ => false, ‘sslverify’ => apply_filters(‘https_local_ssl_verify’, true)) );
     ※本修正は0.01秒から3秒に修正。

★状況
 PHPの「ZendFramework」のライブラリ「Feed.php」を使用した際、
 以下のPHPエラーが発生。

 ■PHPエラー
 Fatal error: Class ‘DOMDocument’ not found in /usr/local/lib/php/ZendFramework/library/Zend/Feed.php on line 195

★環境
 ■サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.2
    ・ZendFramework-1.10.6
   ・Apache:2.2.3

★原因
 ■ライブラリ不足
  php-xml

★解決
 ■php-xmlをインストール
  # yum install php-xml
  ※上記コマンドはCentOSでyumを使用したインストール方法です。

★状況
 PHPの「ZendFramework」のライブラリ「Mail.php」を使用した際、
 以下のPHPエラーが発生。

 ■PHPエラー
 Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Tokyo’ for ‘JST/9.0/no DST’ instead in/usr/local/lib/php/ZendFramework/library/Zend/Mail.php on line 956

★環境
 ■サーバーサイド
  ・OS:CentOS 5.5
   ・PHP:5.3.2
    ・ZendFramework-1.10.6
   ・Apache:2.2.3

★原因
 ■php.iniの記述
  php.iniのタイムゾーンが設定されていなかった
  
  ▲php.iniの内容
  ;date.timezone =
  

★解決
 ■php.iniのタイムゾーンを設定
  
  ▲php.iniに以下を設定
   ;date.timezone = “Asia/Tokyo”

以前紹介した「Apacheで突然CGIが使えなくなる問題

突然suexecが復活してCGIが使えなくなる事があります。
そこで、自動的にsuexecが復活しているかチェックして、Apacheを再起動するスクリプトを紹介します。


■スクリプト概要
suexecが存在していた時、自動的に削除してApacheを再起動する

■テスト済み環境
 CentOS 5.4

■スクリプト内容
#////////////////////////////////////////////////////////////////#
# @スクリプト名:chk_suexec.sh
# @バージョン:1.00
# @作成日:10.04.04
# @更新日:10.04.04
# –
# @作者:masa.h(マサ)
# @サイト1:http://masa.cmix.info/
# @サイト2:http://blog.masa.cmix.info/
# @メール:oldtimer.masa@gmail.com
#////////////////////////////////////////////////////////////////#

#———————-#
# +ユーザ環境
#———————-#

#使用方法
#sh chk_suexec.sh

#suexecのpath
suexec_path=/usr/sbin/suexec

#———————-#
# +処理部分
#———————-#

if [ -e $suexec_path ]; then
#echo “File exist !!”
rm $suexec_path
service httpd restart
date ‘+%Y/%m/%d%r’ >> chk_suexec.log

#else
#echo “No file”
fi

■スクリプト概略
 ・サーバーのsuexec_pathを設定
 ・crontabにて設定

■スクリプトのダウンロード先
 シェルスクリプト:chk_suexec.sh