以前从未涉及到此问题,但在if()语句中测试用户编写的函数是否存在问题?
我在另一个位于不同服务器上的PHP包含文件中有以下内容(称为“myPhpInclude.php”):
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
function displayIt($phrase = NULL) {
if (is_null($phrase)) return false;
else return true;
}
if ($_SERVER['REMOTE_ADDR'] == '123.456.789.012') { /* my ip address */
echo 'include file is coming in ok...';
}
?>
摘自我的HTML文档,该文档位于与PHP包含文件不同的服务器上:
<?php include('http://mydomain.com/includes/myPhpInclude.php'); /* the displayIt() function is contained in this include file */ ?>
...
<div id="content">
<?php if (displayIt('on')) { /* <-- MY PROBLEM ORIGINATES HERE */?>
<p>Some content.</p>
<? } ?>
</div>
网页在if()语句处停止渲染,并且不返回任何错误。 PHP错误调试已激活并打开。
感谢。
答案 0 :(得分:3)
等待等待,你有$短语和$阶段?我认为这是一个错字。
有:
function displayIt($phrase = NULL) { <== phrase
if (is_null($phase)) <== phase
如果没有,请尝试将其放入try {}块,尝试echo displayIt('on');
,也许由于某种原因返回false。
修改:而不是include('http://mydomain.com/includes/myPhpInclude.php');
尝试include('./includes/myPhpInclude.php');
或将其替换为所包含文件的文件系统路径。
即使cross_domain_include有效,从url获取php文件也不会给你php代码,而是输出(在这种情况下会是空的)。
答案 1 :(得分:2)
问题在于包含文件:
include('http://mydomain.com/includes/myPhpInclude.php');
将通过正常的http请求从服务器includes/myPhpInclude.php
请求文件http://mydomain.com
。你将收到的不是php代码,而是运行该php文件时web服务器的输出。甚至在某些条件下:
PHP 4.3.0之前的Windows版本的PHP不支持通过此函数访问远程文件,即使启用了allow_url_fopen也是如此。
您需要做的是,通过本地文件系统包含文件,使用相对路径(或文件系统的绝对路径),例如:
include 'includes/myPhpInclude.php';
答案 2 :(得分:1)
你在第二个变量中拼错了“短语”。