![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHP初心者です。
私が使用したい多くの関数を用意した「functions.php」を作成しました。
関数を使用するファイルは、これを文頭で読み込ませているのですが
出来れば初期状態(外部ファイルを読み込まない状態。requireなど使わないで)で使いたいと考えています。
「.htaccess」などで「functions.php」を読み込んで、「.htaccess」そのディレクトリ以下はPHPファイルを作成したら関数を使用できるようにしたいのです。
※ちなみに私は使用したいサーバーの管理権限はありません
「.htaccess」では無くても良いのですが、こういう方法は可能ですか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
PHPにはauto_prependと呼ばれる自動読み込み機能があり, php.iniまたは
Apacheのhttpd.conf, .htaccessなどで設定が可能です。
.htaccessに記述する場合は、以下のように記述するとよいと思います。
ディレクトリ、読み込むPHPスクリプトのパスは、それぞれ環境に合わせて
変更してください。
<Directory /home/hogehoge/htdocs>
php_value auto_prepend_file /path/to/functions.php
</Directory>
参考URL:http://www.php.net/manual/ja/ini.core.php#ini.au …
ありがとうございます!
まさしく、この「auto_prepend_file」が求めていた挙動です。
これで関数達を先読みすることができました。
すごく便利ですね。
No.3
- 回答日時:
> 私の中でイメージしていたのはどのURLを読み込んでも、.htaccessで1度
> 「functions.php」へ飛ばしてその後に指定のPHPを読み込ませるという処
> 理を行いたかったので.htaccess自体でPHPをincludeさせたいという事では
> 無いです。
これなら可能です。まさにZendFrameworkのデフォルトルーティング手法ですから。
mod_rewriteを有効にし、.htaccessを
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ functions.php
とかしてあげれば。
その後にfunctions.php内からHTTP情報を利用して他のファイルを呼ばせたり。
mod_rewriteが使える環境か確認すれば、この手法は可能です。
出来ないなら、各ファイルでget_included_files()とかを使って
functions.phpが読み込まれているかを確認し、読み込まれていないなら
functions.phpにリダイレクトさせてしまうとか。
多分ですが・・・。
回答遅くなってすみません。。
回答通りに処理したところ、無事にfunctions.phpを先読みすることができました!
(RewriteEngineさえ知らなかったので勉強になりました。)
ただ、この手法だと少しややこしい挙動になってしまうので
castor4bitさんに教わった「auto_prepend」機能を.htaccessで使うことにします。
ありがとうございました。
No.2
- 回答日時:
少し関係ない横槍です。
.htaccessとphpコアの処理は階層が違うので「基本的には無理」です。
No.1の方のやり方以外では私は知りません。
あと、「よく使う関数郡」をひとつの場所に集めるのは危険です。
そこがボトルネックになりやすいです。(アクセス過多の心配がなければその限りではないですが)
機能ごと(クラスごと)にファイルを分けるのがシステム構築の常識であり、理想です。
当方は現場が変わりまくりなので再利用できるコードの重要性が身にしみております^^;
必要なとき必要なものを呼ぶような設計を心がけると良いと思いますよ。
>.htaccessとphpコアの処理は階層が違うので「基本的には無理」です。
私の中でイメージしていたのはどのURLを読み込んでも、.htaccessで1度「functions.php」へ飛ばしてその後に指定のPHPを読み込ませるという処理を行いたかったので.htaccess自体でPHPをincludeさせたいという事では無いです。
私は再利用できるコードの重要性はまだ感じた事がないほど経験が浅いので、素人なりに再利用できるオブジェクト的に考えて設計しようと思います。
アドバイスありがとうございました。
No.1
- 回答日時:
Ethna、ZendFrameworkのようにHTTP情報によって処理が決定される
ような仕組みにすれば可能です。
例えばEthnaの場合
http://ethna.jp/ethna-document-tutorial-overview …
このページの項4で言っている「index.php?action_login=true」というのは
必ずindex.phpとしてアクセスさせてsample_controller.phpをincludeさせ、
sample_controller.php内で共通的に利用するファイルなどを
includeし(デフォルトの挙動の場合)、loginという実際に行いたい
処理を記しているファイルを実行させています。
その為、実際に行いたい処理にはincludeをする必要がなくなっています。
例えばZendFrameworkの場合
http://framework.zend.com/manual/ja/zend.control …
このページの最後で言っている「http://example.com/index/index」というのは
mod_rewriteを利用して必ずindex.phpにアクセスするようにし、
index.phpにてindexというコントローラーと呼ばれるファイルを読み込み、
そこで共通的に利用するファイルなどをinclude出来(デフォルトの挙動の場合)、
indexというアクションコントローラーと呼ばれる実際に行いたい処理を
記してある箇所を実行させています。
その為、実際に行いたい処理にはincludeをする必要がなくなっています。
当然のことながら、結局はどこかでincludeはしないといけないんですけどね。
気持ちは凄く分かりますが、そういう仕組みを作るのが面倒なら、たった1ファイルだし
コピペも苦じゃないし妥協してもいけると思います。
絶対パスにしておけばinclude_pathを気にする必要もないでしょうし、
環境が変わった場合はツールを使って、全ファイルに対して絶対パスの一括置換処理を
行えばいいだけですし。
絶対パスや置換が嫌なら、サーバ現行のinclude_pathにfunctions.phpが
含まれるディレクトリを合わせた状態のものを.htaccessで設定するとか。
.htaccessでは環境を整える事が出来るだけで、直接的にPHPコマンドを実行する事は不可能だと思います。詳しくないので分かりませんが。
返事おくれてスミマセン。。
参考サイトを読ませていただきました。
また、丁寧な解説ありがとうございます。勉強になりました。
質問投稿後も「.htaccess」の設定方法を検索してますが思っている挙動をさせる方法がわかりませんでした。
やはりこの場合は
対象ファイルに直接、絶対パスでのincludeが手っ取り早いようですね。
ただ、もっと何か簡単に解決する方法があるような気がするので(根拠はありません)、もう少し調べてみようと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム 外付けHDDの初期化について 4 2023/03/05 20:00
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
PHP+MySQL SQL文を外部ファイル...
-
CakePHP2のCronでのShellを使う...
-
別のドメインのファイルをrequire
-
XAMPPのPHPファイルがNotFound。
-
サイトのphpソースコードを表示...
-
PHPでファイルを先に読み込ませる
-
URLが.PHPってどういう...
-
【file_exists】ファイルが存在...
-
パーミッションの考え方。
-
php 無名関数
-
phpinfoの内容が見れない
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
CFileDialogの最初のディレクト...
-
別ファイルの変数を呼び出した...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
「クラス関数」「メンバ関数」...
-
リンク先を隠す方法はないでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
.phpファイルが、表示されない
-
URLが.PHPってどういう...
-
use と requireの違いは?
-
PHPからCronを編集したい
-
HTMLに埋め込んだPHPがうまく出...
-
さくらレンタルサーバーでPHPが...
-
プロパティファイルの読み込み...
-
htmlspecialcharsが機能してい...
-
PHPファイルの中身が見られるこ...
-
サーバ無しでphpを動作させる
-
thtmlファイルとはどんなファイ...
-
phpの書き方
-
PHP+MySQL SQL文を外部ファイル...
-
PHPの慣習的な書き方・組み方に...
-
cakephpで特定ファイル表示(hta...
-
PHPを使ってのサーバ上ファイル...
-
session_start()でwarningが表...
-
fopenでファイルを読み込み、そ...
おすすめ情報