auto_prepend_file 删除附加文件的第一行

Posted

技术标签:

【中文标题】auto_prepend_file 删除附加文件的第一行【英文标题】:auto_prepend_file deletes first line of apended file 【发布时间】:2014-04-26 08:28:04 【问题描述】:

当使用 php.ini 时

auto_prepend_file=/homepages/xyz/htdocs/somefile.php

在文件thickbox.css 上(出于某些原因,我必须将css 文件作为php 处理),第一行被删除。 Thickbox.css 的开头是

#TB_overlay 
    background: #000;
    opacity: 0.7;
    filter: alpha(opacity=70);
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 100050; /* Above DFW. */

但带有前置文件的输出是

    background: #000;
    opacity: 0.7;
    filter: alpha(opacity=70);
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 100050; /* Above DFW. */

第一行不见了!

当我在 # 或换行符之前放置一个空白时,该行会重新出现。但是只要第一个字符是#,第一行就消失了。

如何防止这种情况发生?

【问题讨论】:

到目前为止,我有两个假设:1) somefile.php 包含执行此类操作的 PHP 代码 2) 您不是在检查原始输出,而是检查进一步后处理的结果。您是否 100% 确定您的 PHP 代码与问题无关?如何验证线路不存在? 我使用somefile.php 仅用于标题输出。但即使somefile.php 为空白且不包含任何内容,thickbox.css 的第一行也会在以# 开头时被删除。 我可以通过使用网络浏览器调用已处理的thickbox.css 来验证这一点 【参考方案1】:

我自己找到了解决方案。请求的 css 文件不应只是附加。相反,“somefile.php”应该在末尾输出请求的文件本身:

readfile($_SERVER['SCRIPT_FILENAME']); // the requested file
exit(0);

【讨论】:

以上是关于auto_prepend_file 删除附加文件的第一行的主要内容,如果未能解决你的问题,请参考以下文章

PHP:auto_prepend_file 是不是知道“调用脚本”

php auto_prepend_file和auto_append_file的妙用

PHP中auto_prepend_file与auto_append_file用法实例分析

如何为每个目录设置 PHP 的 auto_prepend_file 指令?

apache中的php_value auto_prepend_file如何与php一起使用它总是留在内存中吗?

PHP致命错误:未知:将其添加为auto_prepend_file后无法打开所需的'/home/user/pathto/header.php'