php.iniと.htaccessの関係について - PHPプロ!Q&A掲示板

1987

  • 0P

php.iniと.htaccessの関係について

質問日時 / 2009年4月19日 02:22    回答数 / 3件

Questioner:  honoka  このエントリーをはてなブックマークに追加 

キーワード / php.ini    .htaccess   

どなたかサクラレンタルサーバーを使ったことがある方で分かる方いらっしゃいましたら、
ご解答おねがいします。

現在サクラレンタルサーバー(スタンダードコース)を使っているのですが、拡張子を.htmlでphpのコードを書いて動作をさせたく

下記サイトを参考にさせて頂き設定をしました。
http://ii2.matrix.jp/Junk/PHPSakura/index.html

.htmlでphpコードを書いて動作確認できたのですが、

その後、<?xml ~ ?>という記述でエラーをださない為に
サクラのコントロールパネルよりphp.iniの編集を行い

short_open_tag = Off

を記述し、<? ~ ?> の記述を禁止したかったのですが、そこでつまづいてしまいました。
php.iniに書いた事が適用されず<? ~ ?>がきいてしまいます。
しかし、.htaccessを削除し、phpファイルを作成して、<? ~ ?>を記述して
それを実行すると <? ~ ?>はきかなくなりphp.iniに書いた事が適用されます。

.htaccessには

DirectoryIndex index.html index.php .ht
Action myphp-script /php.cgi
AddHandler myphp-script .php .html

とだけ記述してあります。

.htaccessに書けばいいかと思い、
php_flag short_open_tag = Off と書いたのですが、
サクラではこれはInternalServerErrorになるみたいですので、(マニュアルにもそう書いてありました。)
PHPの設定を.htaccessには記述できません。

.htaccessを削除してしまうと本来やりたかった.htmlでphpの記述ができなくなってしまいます。

なぜ.htaccessがphp.iniに影響するのかがわからないのですが、
どなたか分かる方いらっしゃいましたら、ヒントでもいいのでご教授下さい。
(サクラのレンタルサーバーではユーザー事個別にphp.iniファイルを生成して、
それを読み込んでくれます。)

環境は
FreeBSD
php-5.2.8
Apache/1.3.39
です。

本来ならばサーバー管理者に質問するべきなのですが、
「php.iniの項目の詳細についてはサポート対象外となります。」
という一文があったためこちらで質問させていただきました。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01weekendphpさくらは利用したことがありませんが、 参考にされた
┣A02magicflute2XML宣言やDOCTYPEなどの記述は固定されるのだろうから
┗A03honoka>>weekendphp様 ご返信ありがとうございます。

回答一覧

並び替え:

A01 満足
answererweekendphp [4月19日 03:56]

さくらは利用したことがありませんが、
参考にされたサイトを見る限り、
php-cgiをコピーして、html/phpへのリクエストがあった際に、
そのphp-cgiを利用しているようですので、
以下の方法のいずれかで特定のphp.iniを読み込ませることが可能かと思います。

・html/phpファイルと同じディレクトリ内にphp.iniファイルを作る。
・.htaccessを下記のように編集してみる
  1. Action myphp-script /php.cgi -c /path/to/php.ini
(/path/to/php.iniの部分はご利用の環境に合わせて書き換えてください。)

参考:
http://www.php.net/manual/ja/configuration.file.php

この意見に回答する

ツリーへ TOPへ

A02
answerermagicflute2 [4月19日 05:59] (最終編集:4月19日 06:03)

XML宣言やDOCTYPEなどの記述は固定されるのだろうから、
  1. <?php
  2. $xhtml  = '';
  3. $xhtml .= '<?xml version="1.0" encoding="utf-8" ?>\n';
  4. echo $xhtml;
  5. ?>

  1. <?php
  2. echo <<<XHTML
  3. <?xml version="1.0" encoding="utf-8" ?>
  4. XHTML;
  5. ?>
といった感じにすれば目的は果たせると思うけど、どうでしょう。

サーバーの設定を細かく変えてると、忘れた頃に困る事になるとおもう。

この意見に回答する

ツリーへ TOPへ

A03
answererhonoka [4月19日 09:36] (最終編集:4月19日 09:45)

>>weekendphp様

ご返信ありがとうございます。

php.iniが読み込めていなかったというのが原因でしたが、普通の使い方をしていれば問題なかったのかと思います。

私の書き方がいけなかったのですが、
フォルダ構成が下記の様になってまして、
(wwwがドキュメントルートです。)

www/hoge1.co.jp/index.html
www/hoge2.co.jp/index.html
www/php.ini

サクラの管理画面で設定すると上記の場所にphp.iniが吐き出されるのですが、
www直下にフォルダをもうけ、そこに別ドメイン(言葉が間違ってるかもしれません。)をふり
別のサイトが複数あるようにしてました。
www直下にphp.iniが置いてあればそれ以下全てのフォルダに適用になると思っていたのですが、
http://hoge2.co.jpというURLでアクセスすると本来あるはずの場所にphp.iniが無いと判断されていたのが原因だと思います。

よって、解決方法は.htaccessはそのまま何も付け加えず、
吐きだされたphp.iniをコピペして

www/hoge1.co.jp/index.html
www/hoge2.co.jp/index.html
www/hoge2.co.jp/php.ini
www/php.ini

としたら、php.iniを認識してくれました。
weekendphp様の言葉がヒントになり解決できました。
この度はありがとうございました。

ちなみにサクラでは.htaccessに

Action myphp-script /php.cgi -c /path/to/php.ini

を記述すると

500 Internal Server Errorになりました。

>>magicflute2様

この度はありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)