私は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);
?>
'可メモリサイズがwが関係ありませんi誤ってインクルードされたファイル。このファイルが何をしているかを確認してください。あまりにも多くの情報をメモリに追加しようとしているようです(例えば、あまりにも多くの情報を持つ配列) – Justinas
私の更新は、PHPファイルをインクルードしようとしていることを示しています。私の最初の質問で述べたように、 "test-process.php"ファイル(インクルードしようとしている)が存在するかどうかにかかわらずエラーが出されるので、そのファイルが何をしようとしているかは無関係です。 – bryman79
PHPファイルをインクルードするだけではメモリ制限に達することはできません。あなたのファイルは何ですか?アレイの過剰使用がない場合は、すべてのループをチェックしてください。可能な限り頻繁に変数の設定を解除/リセットします。 – Justinas