レンタルサーバーでrequireがうまくいかない問題

このQ&Aのポイント
  • レンタルサーバーでrequireが正常に機能しない問題が発生しています。
  • index.phpから特定の外部ファイルをrequireすると、フリーレンタルサーバーでは正常に読み込めないようです。
  • いくつかの書き換え方法を試しましたが、エラー表示はなく未解決のままです。PHPの勉強中で解決策を教えていただけないでしょうか?
回答を見る
  • ベストアンサー

レンタルサーバーにてのrequireがうまくいきません。

毎度お世話になります。 質問させてください。 親フォルダ  |-外部用フォルダ  |  |-CSSフォルダ  |  |-PHPフォルダ  |     |-外部.php  |  |-index.php という構成でindex.phpから 「require_once "./外部用フォルダ/PHPフォルダ/外部.php";」 という記述でローカルなら呼び出せるのですが フリーレンタルサーバーにアップロードしてみるとうまく読み込みません。仕様だと思いますがサイトではエラー表示はありません。 ここのサイトをみて 「require(dirname(__FILE__) . "/./外部用フォルダ/PHPフォルダ/外部.php");」 というふうに書き換えたりしてみましたがやはりサイト上ではなにも表示されませんでした。 PHPを勉強し始めたばかりなのですが何か解決策を教えていただけないでしょうか? よろしくお願いします。 ローカル環境 WinXP SP2 + PHP5 サーバー環境 Linux + PHP5 です。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • tumeno
  • ベストアンサー率41% (5/12)
回答No.1

pathが合っていないのでしょう。 次のように記述してエラー表示すればわかると思います。 ini_set("display_errors", "On");

ppalot
質問者

お礼

ini_set("include_path", dirname(__FILE__) ."/外部用フォルダ/phpフォルダ/" ); とすることで解決しました。 どうも最後の「/」が余計だったようです。 ありがとうございました。

ppalot
質問者

補足

tumenoさんご指導ありがとうございます。 ini_set("display_errors", "On");を記述したところ 下記の3行のエラーが表示されました。 Warning: require() [function.require]: Unable to access /home/free/ユーザ名/Webdir/公開フォルダ/外部用フォルダ/phpフォルダ/外部.php in /home/free/ユーザ名/Webdir/公開フォルダ/index.php on line 84 Warning: require(/home/free/ユーザ名/Webdir/公開フォルダ/外部用フォルダ/phpフォルダ/外部.php) [function.require]: failed to open stream: No such file or directory in /home/free/ユーザ名/Webdir/公開フォルダ/index.php on line 84 Fatal error: require() [function.require]: Failed opening required '/home/free/ユーザ名/Webdir/公開フォルダ/外部用フォルダ/phpフォルダ/外部.php' (include_path='.:/usr/share/pear') in /home/free/ユーザ名/Webdir/公開フォルダ/index.php on line 84 「 (include_path='.:/usr/share/pear')」とでていますので 本来はこのディレクトリに置かないといけないのでしょうか? ルートフォルダに置いた場合はローカルでもレンタルサーバーからでも 読み込めるのでその違いがいまいちわかりません。 またこのエラーの場合の解決策は 「ini_set("include_path", "インクルードに使用したい絶対パス/相対パス" );」なのかと思い 「ini_set("include_path", ".:/home/free/ユーザ名/Webdir/公開フォルダ/外部用フォルダ/phpフォルダ/" );」 としてみましたがうまくいきませんでした。 どこが間違っているのかご指摘いただけないでしょうか? よろしくお願いします。

関連するQ&A

  • requireやinclude時の階層の書き方

    ずっと困ってます。よろしくお願いします。 読み込む大元のファイル名がindexだとして、その中にrequireを書くとします。 そこからrequireするファイルはindexと同階層にあるaフォルダにあるreq1.phpとします。 さらにreq1.phpからrequireするファイルがあり、同階層(aフォルダ内)にあるreq2.phpとします。 req2.phpはなぜかindexと同階層と、aフォルダ内の、計2カ所に同名の同じファイルがあるとします。 コードを書くと、 index内でrequire_once('a/req1.php'); req1.php内でrequire_once(dirname(__FILE__).'/req2.php'); としています。 この場合、読み込まれるreq2は、req1と同階層にあるものではなく、indexと同階層のものが読み込まれてしまいます。また、indexと同階層のreq2を消しておけば、req1と同階層に置いてあるreq2が読み込まれます。 この辺の挙動が、なぜこうなるのかを説明してください。 特に、 1.dirnameとの関係について 2.別階層に同名ファイルが複数存在の有無に関係なく、とにかくrequireする階層を確実に1つだけに限定する方法について(dirnameではうまくいかないような気がします) の2点は詳しく知りたいです。 よろしくお願いします。

    • ベストアンサー
    • 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
  • 呼び出し先にさらに呼び出しがある場合について

    PHPバージョン5.2.4を使っています。 index.phpからdir1ディレクトリにあるfile1.phpをrequireして使いたいのですが、 file1.phpもdir1ディレクトリにあるfile2.phpをrequireしているので 次のような呼び出し方ならうまく作動するのですが、 [index.php] define('DIR', realpath(dirname(__FILE__))); require_once 'dir1/file1.php'; [dir1/file1.php] require_once DIR.'/file1.php'; [dir1/file2.php] print "file2表示"; 次のようにindex.phpをdir1ディレクトリに移動させて実行すると file1.phpのrequireでエラーが出てしまいます。 [dir1/index.php] define('DIR', realpath(dirname(__FILE__))); require_once 'dir1/file1.php'; このような呼び出し先の中にさらに別の呼び出しがある場合は どのように記述すればindex.php(実行するファイル)を 別のどんな場所に移動させても作動させることができるのでしょうか?

    • ベストアンサー
    • PHP
  • レンタルサーバーでpear

    こんにちは レンタルサーバー「WADAX」の専用サーバーで pearのFile_Archiveを使いたいのですが、 エラーになります。 pearのサイトより使いたいモジュールのファイルをダウンロード FTPでサーバーに「pear」フォルダを作りファイルをアップ 下記のようにinclude_pathを使っています。 ========= $path = $_SERVER["DOCUMENT_ROOT"]."/pear"; set_include_path(get_include_path() . PATH_SEPARATOR . $path); require_once("Pager/Pager.php"); require_once("File/Archive.php"); ========= 同じようにpearの「Pager」と「File/Archive」をアップしていますが 「Pager」は正常に動き 「File/Archive」はエラーになります。 「File/Archive」は依存ファイルが多いので関連するファイル ■PEAR Package: MIME_Type ■PEAR Package: Mail_Mime (optional) ■PEAR Package: Mail (optional) ■PEAR Package: Cache_Lite 1.5.0 or newer (optional) もpearサイトよりダウンロードしてアップしています。 しかしエラーは相変わらず解消されません。 サーバーへのアップ方法等、どこか違っているのでしょうか? エラー解消はどのようにすればいいかわかる方がいたら 教えていただけないでしょうか? 宜しくお願い致します。

    • 締切済み
    • 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
  • (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等で共通ファイルを読み込む場合のパスの書き方で…。

    単純な質問です。 定数ファイル等、共通のファイルを、サイト内のPHPファイル全てで読み込みたい場合の方法について。 example.com /index.php /[const]/main.php /[page]/index.php ※[ ]はディレクトリを表す サイトexample.comにおいて、 トップページ index.phpと、 /[page]以下のindex.phpで、 同じ定数ファイルを読み込みたいとします。 例では、/[const]/main.php を読み込もうとしています。 ------------------------------ index.phpのスクリプト内では、 require_once 'const/main.php'; ------------------------------ と書け、 ------------------------------ /[page]/index.phpのスクリプト内では、 require_once '../const/main.php'; ------------------------------ と書くことになるかと思います。 このとき、読み込むファイルのパスが両者で異なりますよね。 (「../」が有るか無いかで異なる) これを、共通化したいのですが、可能でしょうか? つまり、例えばですが、 require_once 'COMMON_FILE'; と書けば、どちらのスクリプトファイルにおいても、 正しいパスが読み込まれる、というような。 また、サイトドメインが変更されても、書き換えなくて済むようにしたいです。 (例)example.com → example.net へ移動しても、書き換え要らずの方法で、何か方法を教えて下さい。 とっても、初歩的なことをお聞きして、すみません。

    • ベストアンサー
    • PHP
  • 仮想ドライブにあるソースをrequireするには?

    WindowsでのPHPプログラミングに関する質問です。 コマンドプロンプトで、substを利用して仮想フォルダを作成しました。 ところが、phpプログラムからrequire_once()を使って その仮想フォルダ内のソースを読み込もうとするとエラーとなります。 どうすればこの問題が解決できるでしょうか? require_once()の処理では、substによる仮想フォルダは無視されるのでしょう? よろしくお願いします! 【具体的な内容(一部伏字です)】 ・仮想フォルダ > C:\WINDOWS\system32>subst > H:\: => C:\usr\local\phpdata > C:\WINDOWS\system32>tree /F h:\ > フォルダ パスの一覧: ボリューム IBM_PRELOAD > ボリューム シリアル番号は XXXX-XXXX です > H:\ > └─project1 > xxxx.php ※cat H:\phpdata\project1\xxxx.php ではちゃんとxxxx.phpの内容が表示されます ・require部分のソース require_once('H:/project1/xxxx.php'); ※require_once('C:/usr/local/phpdata/project1/xxxx.php'); なら正常にソースが読み込まれます ・エラーログ PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'h:/project1/xxxx.php' (include_path='.;C:\PHP\pear') in C:\.....\yyyy.php on line 11

    • ベストアンサー
    • PHP
  • smartyのdifineについて

    表示するファイルにdefineにてパスを設定すると正常に 表示されるのですが管理が面倒なので別のファイルに defineにてパスを設定するとエラーになってしまいます。 具体的には以下のソースです。 ---Smarty/libs/path.php--- define ('SMARTY_LIBS_DIR', 'C:/Program Files/xampp/htdocs/Smarty/libs/'); ---Smarty/libs/MySmarty.class.php--- require_once dirname(__FILE__) . '/Smarty.class.php'; require_once dirname(__FILE__) . '/path.php'; ---Smarty/index.php--- require_once SMARTY_LIBS_DIR . 'MySmarty.class.php'; 調べてみたのですが表示するファイルに指定する方法しか みつからなかったのですが別ファイルから指定する事は 無理なのでしょうか?

    • 締切済み
    • PHP
  • phpのrequirについてe

    php初心者です。 同じような処理をまとめて、関数にしました。 debug中なので、function()ひとつに ひとつのphpファイル名をつけています。 あとで合体するつもりで。 当然、requireの数が複数になっていますが、requireの行(冒頭)でエラーになってしまいました。 echoで1行ずつ表示して確認しました。原因がわからず順番を変えたりpath指定を変更したりしたのですが、読み込んでくれません。 なので、処理直前で必要な関数を読み込むようにしたりもしたのですが 冒頭で require (dirname(__FILE__)."/include/******.inc"); require (dirname(__FILE__)."/include/******chk.php"); require (dirname(__FILE__)."/../include/******m.inc"); require (dirname(__FILE__)."/m******.php"); require (dirname(__FILE__)."/m******andom.php"); require (dirname(__FILE__)."/m******time_client.php"); require (dirname(__FILE__)."/error_******.php"); require (dirname(__FILE__)."/log******.php"); まではクリアできました。 (path指定が混ざってますがいろいろ試したので。。。) で、ある関数を呼ぶ直前に require (dirname(__FILE__)."/lfunc*****.php"); としたのですが /lfunc*****.php に飛ばないんです。 (echoが出ない) こういうのはどのような原因があるのでしょうか? ちょっと思ったのですが、何か重複してるのでしょうか? 似たような変数名が多くなってますが、requireした中のfunctionの中なら 別の変数として扱われますよね? 一応構文チェックなどはちゃんと no シンタックスエラーを確認しています。 ログにもかかれないし。 すみません、php初心者にアドバイスお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう