- ベストアンサー
require_onceが動いていない
Cache_Liteを使ってキャッシュ処理を組もうとしています。 実行すると、ブラウザ上には何も表示されない状態です。 試しにキャッシュ処理を除いた部分のPHP処理を実行すると、 その処理は正しく実行されることが確認できました。 いろいろ調べてみると、どうやらrequire_onceが動いていないであろうということに行き当たりました。 いろいろ試して見たのですが、なぜ、require_onceが動作していないのかわからずに先に進むことができない状態でいます。 どの部分を確認して試すべきか、教えていただけないでしょうか。 ■実行環境は以下の通りです。 OS:Windows XP Pro. PHP: PHP5 5.1.4 サーバ: Apache 2.0.58 ■PHP,PEARは正常にインストールされています。 コマンドプロンプトでpear list を実行すると、 "Cache_Lite 1.7.2 stable"と表示されているので、 Cache_Liteそのものはインストールされています。 ■ソース --------------------------------------------------------- require_once('Cache/Lite.php'); //キャッシュ処理 $options = array( 'cacheDir' => '/tmp/cache', 'lifeTime' => 86400, 'caching' => true, 'automaticCleaningFactor' => 20, 'automaticSerialization' => true, 'pearErrorMode' => 'CACHE_LITE_ERROR_DIE' ); $cache = new Cache_Lite($options); $id = 'RTSK001'; if ($data = $cache->get($id)) { //キャッシュがある場合の処理 } else { //キャッシュがない場合の処理 $Cache_Lite->save($data,$id); } ------------------------------------------------------ ■その他 ちなみに、このPHPはhtmlページよりSSIによって呼び出しています。 SSIによるPHPの呼び出しは動作しています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (5)
関連するQ&A
- (require / require_once) (include / include_once)について
毎度、お世話になります。 今回は、requireとrequire_once(includeとinclude_once)の使い分けについて 教えて下さい。 取りあえず、改造しているPHPでは、include()だけを使って正常に動作しています。 include()させている箇所がいくつもあります。 ただ、やっぱりわからないのは、 requireとrequire_once(includeとinclude_once)に関して、 PHPマニュアルなどを見ても、処理方法の違いだけで、それならば最初から全部、 require_once() 又は、include_once() だけの方が良いように思えるのですが、 例えば、この処理に関しては、絶対、include()。これならば、require()。 また、これなら、include_once()、あるいは、require_onceと言う風に、 明確なものはあるのでしょうか? かなり迷路に迷い込んでます。(時間が止まってます) どうかよろしくお願いします。
- 締切済み
- PHP
- require_once で読み込まれたか?
初心者です。教えて頂けますか? require_once で読み込んだと思われるファイルの機能を使用したのですが、 機能した様子がありません。 require_once で読み込めない場合エラーが出るのでしょうか? 以下の様にしても駄目でした。 どの様にすれば良いでしょうか?よろしくおねがいします。 <?php $result = require_once("Auth/Auth.php"); if( $result == True ){ print("True"); } else { print("False"); } ?>
- ベストアンサー
- PHP
- require_onceでファイルが開けない!?
requre_onceでのファイルの読み込みが上手くいかないらしく、次のようなエラー文が出てしまい困っております。 =========エラー文=================== Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 Warning: require_once(http://waku2work.com/mysql2.php) [function.require-once]: failed to open stream: no suitable wrapper could be found in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 Fatal error: require_once() [function.require]: Failed opening required 'http://waku2work.com/mysql2.php' (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\wakuphp\girlup_result_kanryou.php on line 6 ================================ 問題の6行目のソースコードは以下の通りです。 ======ソースコード6行目================= require_once("http://waku2work.com/mysql2.php"); ================================ この場合、”require_once”が読み込めて無いって事ですよね!? 一応初心者なのですが、気になるのは3つ目のエラー表示で、ローカルのパス表示が出てる点です。 設定がうまくいってないのでしょうか? 有識者の方いらっしゃいましたら、どうか宜しくお願いします!
- ベストアンサー
- PHP
- PEARの参照先
PHP5環境下でPEARモジュールをインストールしましたが、実行時にモジュールがないというエラーメッセージが表示され、対応をしています。 お助けください。 1.現象 PHP5のプログラム実行時にエラーとなってしまい、下記のメッセージが表示されました。 Warning: require_once(Cache/Lite.php) [function.require-once]: failed to open stream: No such file or directory in ・・・ Fatal error: require_once() [function.require]: Failed opening required 'Cache/Lite.php' (include_path='.:/home/example/share/pear5') in ・・・ 2.環境 ・さくらインターネット(FreeBSD)でPHP5を独自にインストールしPEARライブラリも導入済です。 PHP5実行ファイルのインストール先 /home/example/www/cgi-bin ・phpinfo()で確認した、include_pathは下記の通りです。 .:/home/example/share/pear5 ・pear config-show で確認した結果は、下記の通りです。 pear config-set bin_dir /home/example/share/pear5/bin pear config-set doc_dir /home/example/share/pear5/PEAR/docs pear config-set ext_dir /home/example/share/pear5/PEAR/extensions pear config-set php_dir /home/example/share/pear5/PEAR pear config-set cache_dir /home/example/share/pear5/PEAR/cache pear config-set data_dir /home/example/share/pear5/PEAR/data pear config-set php_bin /home/example/www/cgi-bin pear config-set test_dir /home/example/share/pear5/PEAR/tests pear config-set download_dir /home/example/share/pear5/temp/download pear config-set temp_dir /home/example/share/pear5/temp ・pear list で確認した結果は、下記の通りです。 Archive_Tar 1.3.2 stable Cache_Lite 1.7.2 stable Console_Getopt 1.2.2 stable HTML_Templete_IT 1.2.1 stable Net_UserAgent_Detect 2.2.0 stable PEAR 1.5.1 stable PEAR_Frontend_Web 0.5.1 alpha Structures_Graph 1.0.2 stable ・Cache_Liteの所在 /home/example/share/pear5 の中で、Cache_Lite らしきモジュールを 探してみたところ、下記のディレクトリにありました。 /home/example/share/pear5/PEAR/Cache Lite.php /home/example/share/pear5/PEAR/Cache/Lite File.php Function.php Output.php /home/example/share/pear5/PEAR/tests/Cache_Lite/tests 拡張子.phptのファイルが多数 ・PEARおよび、モジュールのインストールは下記のサイトを参照して実行しています。 http://zenryokuhp.com/server/sakura_pear.htm 3.疑問点 ・モジュールは、include_pathで指定されている、 /home/example/share/pear5 の直下に置かなければならないのでしょうか。 ・現在、モジュールは /home/example/share/pear5/PEAR に存在しているのですが、 include_pathで指定した位置よりも、1階層下に置いてはいけないのでしょうか。 ・再度、PHP5とPEARのインストールをやり直し、pear config-set コマンドにて、 pear config-set php_dir /home/example/share/pear5/ と設定し、モジュール"Cache_Lite"をインストールしようとしましたが、 "Cannot install, php_dir for channel "pear.php.net" is not writeable the current user" と表示されて、インストールが出来ませんでした。 /home/example/share/pear5/ ではインストール出来ず、 /home/example/share/pear5/PEAR ではインストール出来るというのは、 PHP5をインストールしたときに同時に登録されるPEARのディレクトリには インストール出来ないということなのでしょうか。 以上、ご教授をお願いいたします。
- 締切済み
- PHP
- include_onceについて
php初心者です。 includeやrequireにはinclude_onceやrequire_onceといった "すでに読み込んでいる場合"は無視するというものがありますが、 この"すでに読み込んでいる場合"とはどういう時なのでしょうか? サーバーにキャッシュでもされていて、そのキャッシュがあればそれを利用するという感じなのですか? どういう条件でinclude_onceやrequire_onceが実行されるのか教えてください。 また、どういう時に使い分けるのが賢いやり方なのでしょうか。 よろしくお願いします。
- ベストアンサー
- PHP
- require_once の結果について
linux上でphp Ver5.5.28を使っています。 まず、index.phpは <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>テスト・タイトル</title> </head> <body> <h1>require_onceのテストを行います。</h1> <p><?php require_once("test.php"); ?></p> </body> </html> と記入しています。 test.phpは <?php $aaa = "変数に文字を設定します。"; print $aaa; ?> と記入しています。 実行した結果のHTMLを見ると添付ファイルのとおり不明なコードが追加されています。 また、test.phpを <?php ?> のみでやっても不明なコードが作成されてしまいます。 どなたか、原因が分かる方がいらっしゃれば教えていただけないでしょうか。 よろしくお願いします。 その結果のHTMLを見ると、添付画像のとおりゴミが出力されています。
- ベストアンサー
- PHP
- requireについて
http://ドメイン/クラス名/メソッド名 というように、アドレスに従って、Apacheで集約ページ(index.php)にリライトし アドレスから該当クラスを生成、メソッド呼び出し。 という処理内容でフレームワークの勉強をしております。 http://ドメイン/Cart/add というアドレスを実行し、 index.php内で、 Cartクラスを生成し、Cartクラスのaddメソッドを実行させました。 ・Cartクラスのコンストラクタで、Requestクラスを生成する処理を書いているのですが なぜか自分の考えた通りのrequire文を、Cart.phpに記述するとエラーが出るのです。 【フォルダ・ファイル構成】 controllersフォルダ----Cart.php |-index.php |-Request.php Cart.phpは、Controllersフォルダに入っているので、Request.phpを呼び出す際には、 一階層上の【require_once '../Request.php'】だと思っていたのですが、 実行すると Request.php のソースが見つからないと出ます。 試しに【require_once 'Request.php'】に変更し、 実行すると、ファイルが読み込まれ、CartクラスのコンストラクタでRequestクラスが生成されます。 なぜ、【require_once 'Request.php'】にすると、クラスの生成が成功するのでしょうか? index.phpの中で、Cartクラスを生成しているから、 【Requst.phpは、index.htmlから見て】の require文を記述しないといけないのでしょうか? ご教授よろしくお願いします。
- ベストアンサー
- PHP
- pear_info.phpも表示できません
PCをサーバーにしてPHPの練習をしている初心者です。最近PEARを入れてDBパッケージをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php ini_set ("display_errors", "1"); error_reporting(E_ALL); require_once ("PEAR/Info.php"); //←line 5 $info = new PEAR_Info(); $info->show(); ?> Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\pear_info.php on line 5 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;c:\php\includes;C\php\PEAR;') in C:\Program Files\Apache Group\Apache2\htdocs\pear_info.php on line 5 (コピーペーストすると\になりましたが、ブラウザの表示では/の逆向きです) ---------------------------------------------- DB::connectでも同様の警告が出ます。PHPとMySQLだけだと問題なく動くのでPEARのパスを確認したのですか、原因が分かりません。助言いただけるとありがたいです。 php.iniのパス ;***** Added by go-pear include_path=".;c:\php\includes;C\php\PEAR;" ;***** phpinfoのinclude_path .;c:\php\includes;C\php\PEAR; (コピーペーストすると\になりましたが、ブラウザの表示では/の逆向きです) コマンドプロンプトから "C:\PHP>pear list" での表示 Archive_tar 1.3.2 stable Console_Getopt 1.2.3 stable DB 1.7.11 stable MDB2 2.4.1 stable PEAR 1.6.0 stable Pear_info 1.6.1 stable Structure_Graph 1.0.2 stable PCの環境 Windows XP Apache 2.0.59 PHP 5.2.3 MySQL 5.0.41
- ベストアンサー
- PHP
- Cache Liteでcasheを作ってくれない
.htaccessを利用して、awsの商品ページにアクセスして、xmlをキャッシュするようなphpを組んでみました。 たとえば、http://doracken.com/ds/13305831-4.html にアクセスすると、.htaccessでitem.phpにアクセスされ、13305831-4の部分をGETで因数として渡す→ブラウズノードとページを送り、自動的にawsのURLに組み立てるというものです。 --Item.php-- <?php $Browse = $_GET['b'] ; $Bro = $_GET['bro'] ; $pgn = $_GET['Page']; $URL = "http://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&SubscriptionId=1ZVAJQT4R8GWRG0G6502&AssociateTag=auctionzituyo-22&Operation=ItemSearch&SearchIndex=VideoGames&BrowseNode=".$Browse."&ResponseGroup=Offers,ItemAttributes,Similarities,Reviews&ContentType=text/html&Style=http://doracken.com/dsitems.xsl&Version=2006-05-17&ItemPage=".$pgn; require_once 'Cache/Lite.php'; $options = array( 'cacheDir' => './tmp/', "lifeTime" => 3600, ); $Cache_Lite = new Cache_Lite($options); if ($cache = $Cache_Lite->get($URL)) { $content = $cache; }else{ $content = file_get_contents($URL); $Cache_Lite->save($content,$URL); } print $content; ?> しかしなぜか、アクセスしたawsページをキャッシュしてくれないんです。一体どのように書けばいいでしょうか?
- ベストアンサー
- PHP
- require Auth.php
require 'Auth/Auth.php'; の動作について教えてください。 サンプルソース a.php に、 「require 'Auth/Auth.php';」と冒頭に記述してありました。 PEARだと思うのですが、結局この記述は、 a.phpに、 (1)Auth.phpの内容を取り込む? (2)Auth.phpの内容を継承する? どちらの解釈の方が正しいのでしょうか? 今までrequire だと、指定したphpの内容を取り込む((1)番だと)だと認識していました。 以下ソースのように動作してると思っています。Auth.phpも同じ動作と思っていいものなのでしょうか。 ・test.php <?php echo "start!!\n"; include("include.php"); echo "end!!\n"; ?> ・include.php <?php echo "include start!!\n" ?> ●実行結果 start!! include start!! end!!
- ベストアンサー
- PHP
お礼
おかげさまで、無事解決できました。 いろいろとご指導いただき、ありがとうございました。
補足
回答ありがとうございます。 確認したところ、php.iniの中で、 ;include_path=".;C:\php\pear" という記述になったままでした。 1文字目のセミコロンを取って、 include_path=".;C:\php\pear" として保存、apacheを再起動して phpinfo()で確認すると、 include_pathが、 .;C:\php\pear となっているのを確認でき、PHPも処理が実行されるようになりました。 ちなみに、php.iniは、PHPをインストールしたデレィクトリではなくて、 c:\windows 下のphp.iniを参照していました。 ありがとうございました。