2017-06-29 13 views
0

私はWindows 10マシンでXAMPP(バージョン7.0.18)を実行しています。私は "DocumentRoot"フォルダを含む私のデスクトップ上にある "site"という名前のフォルダを持っています。 「DocumentRootの」フォルダのパスは、httpd.confファイルに設定されています。DocumentRootの外にあるPHPファイルを含むXAMPPの問題

DocumentRoot "C:\Users\Username\Desktop\site\DocumentRoot" 
<Directory "C:\Users\Username\Desktop\site\DocumentRoot"> 
    Options Indexes FollowSymLinks Includes ExecCGI  
    AllowOverride All  
    Require all granted 
</Directory> 

は、私はPHPファイルからの応答を返すように「DocumentRootの」フォルダ内のHTMLファイルにAJAXを使用しようとしています。 PHPファイルが "DocumentRoot"フォルダにある場合はうまく動作しますが、 "DocumentRoot"フォルダ(C:\ Users \ Username \ Desktop \ site \ includesなど)の外にある場合は動作しません。 PHPファイルは "DocumentRoot"フォルダにあります。例えば、私はphp.iniファイルに設定され、次のinclude_pathを試してみました:error_reportingのは、php.iniファイルにE_ALLに設定されているにもかかわらず

include_path = ".;c:\Users\Username\Desktop\site\includes" 

を、唯一のエラーが返されたPHPのエラーログを経由している(ように思わスクリプトのタイムアウトに関連する - PHPエラーが提示されるまでの時間を短縮するために1Mに設定のmemory_limit):

“PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 4096 bytes) in C:\Users\Username\Desktop\site\DocumentRoot\test.php on line 1.” 

フォルダ自体が持っている含まれてリネーム/フォルダが含まれており、削除からのPHPファイルの名前を変更/削除しますエラーへの影響はありません。ファイルやディレクトリが見つからないというエラーが表示されることが予想されますが、存在しません。

私はXAMPPを初めて使用しているため、これを理解できません。プロダクションサーバでこのような状況を試したことはありませんでしたが、プロダクションサーバでこのような問題は発生していませんでした。任意の提案をいただければ幸いです。

UPDATE 1

「DocumentRootの」フォルダ外部PHPファイルを含むしようとしている「ドキュメントルート」フォルダ( "test.phpを")、でPHPファイル(「テストprocess.php 「)は、1行目に以下を有する:

<?php include 'test-process.php'; ?> 

UPDATE 2

私が使用してみました "test.phpを "ファイルとエラーなし "の)" のinclude_once"(代わりに" 含むがsが与えられる。したがって、おそらく "Allowed memory size ..."エラーは "test-process.php"ファイルを繰り返し含めることによって発生します。

しかし、私はまだエラーが出されない理由を理解していません。私はinclude_pathを存在しないものに変更することもできますし、エラーも出されません。コメントに応答して

UPDATE 3

「test.phpを」及び「テストprocess.php」は、単純なテストケースとして作成されました。上記の「Update 1」に記載されているように、「test.php」ファイルにはinclude文を含む1行のコードしかありません。 「テストprocess.php」ファイルは、JSONとしてメッセージを返すために、次があります。それは私が」という名前のルートディレクトリに「test.phpを」ファイルのコピーを残してうっかりしていたことが判明し

<?php 
    $output['message'] = 'Hello World'; 
    echo json_encode($output); 
?> 
+1

'可メモリサイズがwが関係ありませんi誤ってインクルードされたファイル。このファイルが何をしているかを確認してください。あまりにも多くの情報をメモリに追加しようとしているようです(例えば、あまりにも多くの情報を持つ配列) – Justinas

+0

私の更新は、PHPファイルをインクルードしようとしていることを示しています。私の最初の質問で述べたように、 "test-process.php"ファイル(インクルードしようとしている)が存在するかどうかにかかわらずエラーが出されるので、そのファイルが何をしようとしているかは無関係です。 – bryman79

+0

PHPファイルをインクルードするだけではメモリ制限に達することはできません。あなたのファイルは何ですか?アレイの過剰使用がない場合は、すべてのループをチェックしてください。可能な限り頻繁に変数の設定を解除/リセットします。 – Justinas

答えて

0

test-process.php "を実行したので、メモリー制限に達するまでincludeステートメントを継続的に実行していました。

2つの解決策:

  1. php.iniファイルに設定されたのinclude_pathを除外する
  2. をルートディレクトリからの変更を(include文で)「テストprocess.php」ファイルを削除します。ルートディレクトリ:###バイトexhausted`の

    include_path = "c:\Users\Username\Desktop\site\includes"

関連する問題