我是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;
当我使用警报检查__FILE_时,它会显示没有任何斜杠的整个路径。
<?php
echo '<script language="javascript">';
echo 'alert("'.__FILE__.'")';
echo '</script>';
?>
&#13;
因此,它不显示 c:\ directory \ subdirectory \ theapp \ index.php ,而是显示 c:directorysubdirectorytheappindex.php
我猜这是我收到以下错误的原因:
注意:未定义的偏移:第3行的C:\ Directory \子目录\ theapp \ index.php中的1
我需要做些什么才能使其正常工作?
答案 0 :(得分:3)
显示未定义的偏移通知,因为您使用数组的第一个和第二个索引&#34; $ FileArray&#34;,在此之前您应该验证该变量是否存在(isset方法)
如果要检查PHP代码,请使用var_dump(),例如:
<?php
var_dump(__FILE__);
在这种情况下,不要关闭PHP标记。你没有看到&#39; \&#39;标志,因为反斜杠是JavaScript(和PHP)中的转义符号,例如:
alert("this\is\sample\text");
&#13;
如果要显示带有转义符号的字符串,则必须使用双反斜杠:
alert("this\\is\\sample\\text");
&#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__));