ウェブサイトTips
Apacheの設定
.htaccessの活用
httpd.confでDocumentRootを指定しますが、そのディレクトリの配下にあるディレクトリであってもアクセスを拒否したい場合があります。そんなときはそのディレクトリ内に.htaccessを作成します。
【.htaccessの記述】
order deny,allow
deny from all
allow from 192.168.0.0/24
上記.htaccessにて設定するアクセス制限の意味は、次のようになります。
1行目 拒否・許可の順に評価する
2行目 アクセスをすべて拒否する
3行目 ローカルネットワークの一部のアクセスを許可する。CIDRによるネットワーク部・ホスト部の指定方法で指定している
この設定でローカルネットワークの一部のみアクセスを許可し、外からのアクセスはすべて拒否することになります。
HTML,PHP
checkboxの値の受け渡し
ウェブページで、入力した値を送信する場合form要素を使います。form要素の中で使う要素としてはinput要素などがありますが、その結果をPHPで受け取るときは、スーパーグローバル変数$_GET,$_POSTなどを用います。
input要素のtype属性がcheckboxのときの値の受け渡しは、渡す側の記述がうまくない場合、渡らないことがあったりしますので受け取る側では結構手間取りることがあります。
たとえば、クライアントからデータを送信してもらう場合、入力フォームから一度確認して送信する構成をとることがありますが、その場合は「入力」「確認」「送信」の3つの画面となります。
入力画面の渡す側ではinput type="checkbox"のname属性は、通常name="name[]"としますが、受け取った確認のページからさらに次の送信のページにcheckboxの結果を渡すにはどうするのでしょう。
そんなときは、渡す側で次のようにします。
【受け取ったページからさらに次のページに渡す場合の記述】
foreach($ary as $aryv) {
print "<input type="hidden" name="aryv[]" value="{$watasu}" />";
}
こうすることで、渡されたページでは$_POST["watasu"]で受け取ります。その後の送信のページは配列で処理します。
PHP
メール送信
PHPを使用してのメールが送信できない場合があります。 maillogをよく読むと分かりますが、送信者が正確に記述されていないとrejectされるようです。 そんなときの解決方法はheadersをきちんと構成すると送信できます。
$headers = "MIME-Version: 1.0 \n" ;
$headers .= "From: " . mb_encode_mimeheader(mb_convert_encoding($name,"ISO-2022-JP","AUTO")) . "<".$email."> \n";
$headers .= "Reply-To: " . mb_encode_mimeheader(mb_convert_encoding($name,"ISO-2022-JP","AUTO")). "<".$email."> \n";
$headers .= "Content-Type: text/plain;charset=ISO-2022-JP \n";
WORDPRESS,PHP
ワードプレスのインストール
WordPressは、ブログやCMSのツールとして高いシェアを獲得しているオープンソースで提供されているソフトウェアです。 基本的な構成は、PHPとデータベースシステムにMySQLを利用して、WordPressを動作させます。
しかし、データベースはMySQLでなくPostgreSQLを使いたいと思う方も多いのではないでしょうか。
LAPPにて構成しているシステム上でWordPressをインストールする手順を簡単にご紹介します (とは言ってもあちこちのサイトで紹介されていることですが)。
今回の構成
- Fedora Linux
- PHP 5.2.3
- PostgreSQL 8.3.11
- WordPress 3.2.1
- PG4WP 3.2.1
PG4WP
PG4WPは、WordPressが利用するデータベースをPostgreSQLにするためのプラグインです。
手順
1.ソースをダウンロード、readme.txtなどに記述されたところに配置します。
- wordpress-3.2.1-ja.tar.gz
- postgresql-for-wordpress.1.2.0.zip
2.パーミッションの設定
ダウンロードして展開しただけではパーミッションが適正ではないため、chmod,chownにてhttpdがアクセスできるように設定します。
chown -R apache:apache wordpress
chmod -R 755 wordpress ... ディレクトリ関係
chmod -R 644 wordpress ... ファイル関係
3.データベースの作成
PostgreSQLにデータベースを作成します。
createdb -E UTF8 -T template0 wordpress
4.環境の設定
WordPressの環境設定を行います。
cp wp-config-sample.php wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'xxxxxxxx');
define('DB_PASSWORD', 'xxxxxx');
define('DB_HOST', 'localhost');
define('AUTH_KEY', '?2...........................................................h4~');
define('SECURE_AUTH_KEY', 'qr..........................................................uiro');
define('LOGGED_IN_KEY', 'ig-g.......................................................93o-x');
define('NONCE_KEY', 'Rl%.......................................................5-@2bz');
define('AUTH_SALT', '2F_.......................................................)zcg1R');
define('SECURE_AUTH_SALT', 'tf].......................................................qykMAl');
define('LOGGED_IN_SALT', 'Q1k........................................................~D_c|');
define('NONCE_SALT', 'd%5.......................................................p4x`Zo');
AUTH_KEY〜NONCE_SALTは、https://api.wordpress.org/secret-key/1.1/salt/ にアクセスすると入手できます。
エラー
WordPressの設定をしようとアクセスしたところ、画面が真っ白で何も表示してくれません。 ログを見ると次のエラーが出ています。
(抜粋)
[Thu Xxx 00 00:13:33 2XXX] [error] [client XXX.XXX.XXX.XXX] PHP Warning: require_once(/core.php) ['function.require-once']: failed to open stream: Permission denied in /db.php on line 39
[Thu Xxx 00 00:13:33 2XXX] [error] [client XXX.XXX.XXX.XXX] PHP Fatal error: require_once() ['function.require']: Failed opening required '/pg4wp/core.php' (include_path='.....') in /db.php on line 39
コンテキストを設定
いろいろ調べましたが、原因が分かりません。パーミッションはちゃんとアクセスできる設定になっています。
このシステムはSELinuxとして動作させるため、SELINUX=enforcingと設定していました。つまり、セキュアなOSとして動作しています。 コンテキストの設定が違っていると正常に動作してくれません。セキュリティが確保された状態で動くことになります。
そこでコンテキストを設定しました。
chcon -t httpd_sys_content_t db.php
chcon -R -t httpd_sys_content_t pg4wp
これで、きちんと動作するようになりました。
注意
ここに説明したことを基に行ういかなる操作・作業ついて、すべて参考にされた方の責任において行うようお願いします。 同じあるいは類似の操作・作業による結果から得られた損失などについて当事業所は責任を負うものではありません。