__FILE__ Windows上PHP中的Magic Constant不返回斜杠

时间:2016-10-20 11:56:49

标签: php

我是PHP的新手。我正在对在Apache中开发和运行的PHP应用程序进行故障排除。我们正在将应用程序移动到IIS下运行php的Windows服务器。 index.php的顶部有以下代码抛出错误:



<?php
	$FileArray = explode("/",__FILE__);
	include_once("/" . $FileArray[1] . "/" . $FileArray[2] . "/theapp/api/MainTemplate.inc.php");
	include_once("/" . $FileArray[1] . "/" . $FileArray[2] . "/theapp/class/User.class.php");

?>
&#13;
&#13;
&#13;

当我使用警报检查__FILE_时,它会显示没有任何斜杠的整个路径。

&#13;
&#13;
<?php
echo '<script language="javascript">';
echo 'alert("'.__FILE__.'")';
echo '</script>';
?>
&#13;
&#13;
&#13;

因此,它不显示 c:\ directory \ subdirectory \ theapp \ index.php ,而是显示 c:directorysubdirectorytheappindex.php

我猜这是我收到以下错误的原因:
注意:未定义的偏移:第3行的C:\ Directory \子目录\ theapp \ index.php中的1

我需要做些什么才能使其正常工作?

2 个答案:

答案 0 :(得分:3)

显示未定义的偏移通知,因为您使用数组的第一个和第二个索引&#34; $ FileArray&#34;,在此之前您应该验证该变量是否存在(isset方法)

如果要检查PHP代码,请使用var_dump(),例如:

<?php
   var_dump(__FILE__);

在这种情况下,不要关闭PHP标记。你没有看到&#39; \&#39;标志,因为反斜杠是JavaScript(和PHP)中的转义符号,例如:

&#13;
&#13;
alert("this\is\sample\text");
&#13;
&#13;
&#13;

如果要显示带有转义符号的字符串,则必须使用双反斜杠:

&#13;
&#13;
alert("this\\is\\sample\\text");
&#13;
&#13;
&#13;

简单运行:

<?php
    echo '<script language="javascript">';
    echo 'alert("'.str_replace('\\', '\\\\', __FILE__).'")';
    echo '</script>';

这类似于将反斜杠更改为斜杠:

<?php
    echo '<script language="javascript">';
    echo 'alert("'.str_replace('\\', '/', __FILE__).'")';
    echo '</script>';

反斜杠只是双引号字符串中的转义符号。

答案 1 :(得分:0)

正如一些人所说,这是一个与'\'相关的问题。

你可以这样做:

$FileArray = explode("/", addslashes(__FILE__));