如何使用PHP执行Apache子请求?

如何使用PHP执行Apache子请求?,php,include,Php,Include,我正在尝试使用PHP函数virtual()向满足条件的“未找到”页面的用户正确显示错误文档。这是我在脚本上写的: // if condition is met virtual('/var/www/error/HTTP_NOT_FOUND.html.var'); 不知怎的,显示了一个空白页,这是我收到的警告: PHP警告:virtual():无法包括 “/var/www/error/HTTP_NOT_FOUND.html.var”-中的请求执行失败 /var/www/html/test第100行

我正在尝试使用PHP函数
virtual()
向满足条件的“未找到”页面的用户正确显示错误文档。这是我在脚本上写的:

// if condition is met
virtual('/var/www/error/HTTP_NOT_FOUND.html.var');
不知怎的,显示了一个空白页,这是我收到的警告:

PHP警告:virtual():无法包括 “/var/www/error/HTTP_NOT_FOUND.html.var”-中的请求执行失败 /var/www/html/test第100行

我已检查是否正在执行以下操作:

  • 在php.ini中,
    include_path=“.:/var/www/error”

  • 在httpd.conf中

    <IfModule mod_negotiation.c>
    <IfModule mod_include.c>
     <Directory "/var/www/error">
      Options +Includes
      AddOutputFilter Includes html
      AddHandler type-map var
      Order allow,deny
      Allow from all
     </Directory>
     ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    </IfModule>
    </IfModule>
    
    
    选项+包括
    AddOutputFilter包括html
    AddHandler类型映射变量
    命令允许,拒绝
    通融
    ErrorDocument 404/error/HTTP\u NOT\u FOUND.html.var
    
  • Apache具有对错误文件夹和文件的读取权限


  • 什么可能导致警告以及如何解决此问题?

    尝试从虚拟机中删除根文件夹:

    virtual('/error/HTTP_NOT_FOUND.html.var');
    

    为什么不使用常规的404页面和标题位置?@Dagon,因为我希望该页面显示404错误,而不是执行重定向。您的问题是“重定向用户”,我想我只是感到困惑。@Dagon,我很抱歉。我现在就修改它。好吧,那为什么不使用include?暂定+1。到目前为止,我自己还没有使用过
    virtual
    ,但是查看文档,似乎确实需要URL路径,而不是文件路径。这很有道理,因为这是一个Apache子请求。你太棒了。它起作用了!你们中有人知道如何将
    var=“REDIRECT\u STATUS”
    注入这个子请求吗?它显示的是无而不是404。谢谢