我在Windows 10计算机上运行XAMPP(版本7.0.18)。我的桌面上有一个名为“site”的文件夹,其中包含“DocumentRoot”文件夹。 " DocumentRoot"的路径文件夹在httpd.conf文件中设置:
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>
我试图在&#34; DocumentRoot&#34;中的HTML文件中使用AJAX。用于从PHP文件返回响应的文件夹。如果PHP文件位于“DocumentRoot”文件夹中,它可以正常工作,但如果它位于“DocumentRoot”文件夹之外(例如C:\ Users \ Username \ Desktop \ site \ includes)并且包含在另一个文件夹中,则它不起作用PHP文件位于“DocumentRoot”文件夹中。例如,我尝试在php.ini文件中设置以下include_path:
include_path = ".;c:\Users\Username\Desktop\site\includes"
尽管在php.ini文件中将error_reporting设置为E_ALL,但唯一的错误是通过PHP错误日志返回(似乎与脚本超时有关 - memory_limit设置为1M以减少PHP错误之前的时间量提出):
“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.”
从includes文件夹中删除/重命名PHP文件并删除/重命名includes文件夹本身对错误没有影响。我希望看到一些错误,说明找不到文件或目录,但没有。
我是XAMPP的新手,无法解决这个问题。虽然我没有在生产服务器上尝试过这种确切的情况,但我过去使用过AJAX,在生产服务器上没有这样的问题。任何建议将不胜感激。
更新1
“DocumentRoot”文件夹中的PHP文件(&#34; test.php&#34;),它试图将PHP文件包含在“DocumentRoot”文件夹之外(&#34; test-process.php&# 34;),在第1行有以下内容:
<?php include 'test-process.php'; ?>
更新2
我尝试使用&#34; include_once&#34; (而不是&#34;包括&#34;)&#34; test.php&#34;文件,没有错误。所以也许&#34;允许的内存大小......&#34;尝试重复包含&#34; test-process.php&#34;文件。
但我仍然不明白为什么没有错误。我甚至可以将include_path更改为不存在且没有给出错误的内容。
更新3
在回应评论时,&#34; test.php&#34;和&#34; test-process.php&#34;被创建为一个简单的测试用例。如&#34;更新1&#34;以上,&#34; test.php&#34; file只有一行带有include语句的代码。 &#34; test-process.php&#34; file有以下命令将消息作为JSON返回:
<?php
$output['message'] = 'Hello World';
echo json_encode($output);
?>
答案 0 :(得分:0)
事实证明,我无意中留下了&#34; test.php&#34;名为&#34; test-process.php,&#34;的根目录中的文件所以它一直在运行include语句,直到达到内存限制。
两种可能的解决方案:
更改php.ini文件中的include_path集以排除根目录:
include_path = "c:\Users\Username\Desktop\site\includes"