1

以前从未遇到过这种情况,但是在 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...';
}

?>

摘自我在 PHP 包含文件的单独服务器上的 HTML 文档:

<?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错误调试已激活并打开。

谢谢。

4

3 回答 3

3

等等等等,你有$phrase 和$phase 吗?我认为这是一个错字。

那里:

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 代码,而是输出(在这种情况下为空)。

于 2012-05-09T14:55:52.890 回答
2

问题在于包含文件:

include('http://mydomain.com/includes/myPhpInclude.php');

将通过正常的 http 请求includes/myPhpInclude.php从服务器请求文件。http://mydomain.com您将收到的不是 php 代码,而是 Web 服务器运行该 php 文件时的输出。即使在某些条件下:

PHP 4.3.0 之前的 Windows 版本的 PHP 不支持通过此函数访问远程文件,即使启用了 allow_url_fopen 也是如此。

您需要做的是通过本地文件系统包含文件,使用相对路径(或文件系统的绝对路径),例如:

include 'includes/myPhpInclude.php';
于 2012-05-09T15:27:54.203 回答
1

您在第二个变量中拼写错误的“短语”。

于 2012-05-09T14:55:43.127 回答