- ベストアンサー
拡張子.htmlにphpを記述CGIのように動かす
- Mac OSXの環境で拡張子.htmlにphpをCGIのように動かす方法について質問があります。
- 具体的には、.htaccessの設定やphp.iniの設定などについて知りたいです。
- 初心者のため専門用語の理解はまだ限られていますが、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
CORE SERVER.JP - PHPをCGIとして動かす方法について http://www.coreserver.jp/help/index.php/phpcgi/ 参考にされたのはこちらの記事でしょうか?ちょっと内容が古そうですね。 >> そのほうがセーフモードやユーザー名の制限が無くなる…とありました。 PHPのセーフモード自体がすでに昔の機能なんですよね… PHP Manual - セーフモード http://php.net/manual/ja/features.safe-mode.php パーミッション644で動作するのかに関しては、私が調べた限りでは肯定する意見も否定する意見も存在したので、実際に検証してみないことには明言することは出来ません。一般的にCGIという枠で考えれば755が必要だと思ったのですが…ただ、これがCGI版のメリットではないことは断言できます。モジュール版はパーミッション644で動作します。 もっと詳しい記事を見つけたので掲載させていただきます(CentOS向けですが)↓ レンタルサーバー・自宅サーバーの設定・構築のヒント http://server-setting.info/centos/php_cgi_module_exchange.html http://server-setting.info/centos/apache_fastcgi_fcgid_php.html http://server-setting.info/centos/apache-mod_fastcgi-php-fpm.html まあ、特に拘らずとも標準のモジュール版を使っておけば何も問題はないと思います。練習環境でパフォーマンスチューニングなんてする必要もありませんし。
その他の回答 (3)
ちなみに... 私は error_reporting = E_ALL | E_STRICT を推奨しておきます。 最初から error_reporting = E_ALL & ~E_NOTICE で書くとダメプログラマ一直線ですので。 E_NOTICEは変数名のタイプミスを見つけるのにも非常に役立ちますし。
お礼
error_reporting の記述に関して参考になりました。ありがとうございました。 なお、一部に補足を加えました。アドバイスをいただけたら幸いです。
補足
特に確認したいこと… .htaccessの記述の件。サクラネットのサービス説明では拡張子.phpの場合に、x-httpd-phpcgi .phpと記述するように案内しています。 私の場合は 拡張子.htmlで要所にphpを記述します。その場合でも 「x-httpd-phpcgi .php .html .htm」で動くのかが心配です。
今時純正のCGIなんか使う人なんかいるんでしょうか…「mod_php」か「FastCGI(mod_fcgid/mod_fastcgi)」の2択だと思いますが。純正のCGIはデメリットばかりでいいこと全然ないですよ。 CentOSにfastcgiの導入&mod_phpとの比較 http://blog.mizoshiri.com/archives/1132
お礼
回答ありがとうございまいた。回答に関しては即座に理解できませんが、よく調べて参考にさせてただ来ます。
補足
モジュール版phpとしての使用と、CGI版phpとしての使用があるようですが、 私の場合はCGI版phpとして使いたいと思っています。そのほうがセーフモードやユーザー名の制限が無くなる…とありました。 またパーミッション644などCGIオーナー実行権限がなくても標準のモジュール版phpの設定を引き継いで動作するとも聞きました。正確には判りませんので質問した次第です。
- yambejp
- ベストアンサー率51% (3827/7415)
>上記環境でphpをCGIのように動かしたいよ思っています。 本当にCGIとして動かしたいのでしょうか? AddType application/x-httpd-php .php 的なモジュールとして動かす方が一般的だと思いますが >error_reporting = E_ALL | E_STRICT 深く学習したいテスト用やクライアントへの納品用の厳密なチェック必要な場合は それでもいいかもしれませんが、下手に厳密チェックをするといろいろエラーを 消しこむのが面倒です。柔軟に処理したいなら error_reporting = E_ALL ^ E_NOTICE でも十分かと、もうちょい工夫して error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED 的な処理でもいいかも。 特定スクリプトだけ厳密にチェックしたいならスクリプトごとに error_reporting(E_ALL | E_STRICT); などを埋め込んでおけばいいので・・・
お礼
error_reportingの記述は大変参考になりました。 厳密チェックで多発するエラー判定を順次消していくのは大変、特定スクリプト で対応すれば…は大変ありがたいアドバイスでした。 ありがとうございました。
補足
拡張子は.htmlです。そこにphpを組み込んだサイトですが、AddType application/x-httpd-php .phpでサーバー側の処理ができるのか私には判然としませんので、質問させていただきました。
お礼
大変ご親切な回答に感謝しています。サーバー側での動作やセキュリティを事前に自分なりに検証した上で、試作を続行したいと思います。時間がかかりますが今後もよろしくお願いいたします。
補足
http://www.fumi.org/neta/201205sv.html によりますと、phpはModule方式かCGI方式かの2者択一ではなく、両者は共存でき、呼び出し方の違いだけ。実行形式を切り替えているのではない。という記述を見つけました。 脆弱性解消にはmime_moduleなどにAddHandler cgi-script .hoh Action cgi-script / cgi-bin/php-cgi と記述すれば良い。とありました。 アドバイスいただいた http://server-setting.info/centos/apache_fastcgi_fcgid_php.html も以前に参照していましたが、PHPをCGi版で動作させるとphpinfo( );の出力情報に「Server API CGI/FastCGIと表示され、phpはFastCGIに対応している… となっています。両者が共存できる、という点は同じ解説でなないでしょうか?