2

我有一个问题,服务器上的 include() 函数不想工作,我不知道为什么?

我有:

 if (file_exists('/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')) {
    echo "1 works";
} else {
    echo "The file 1 does not exist";
}

if(include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php" == 'OK')
{
    echo 'INCLUDE 1 works';
}
else
{
    echo 'Step 1 fail';
}
if(include '/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php' == 'OK')
{
    echo 'INCLUDE 2 works';
}
else
{
    echo 'Step 2 fail';
}

它返回:1 works Step 1 fail Step 2 fail 我不知道如何强制它工作。帮助我使用 zend 框架,这个文件在库中(与 zend -libraries - 目录平行,但它不想在没有包含目录的情况下工作:/


当我添加时,这对我来说真的很奇怪:

include ("/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php");

这是正确的路径,我只有空白页!但是当我添加:

include ("/homedddd/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php");

这是错误的路径,页面不是空白的,看起来工作正常。这意味着这个 IntelliSMS 库有问题,它不适用于我的服务器,但我不知道为什么?可能是服务器阻止发送短信之类的?你有什么主意吗?这个库来自http://intellisms.co.uk/sms-gateway/php-sdk/也许它需要 OpenSSL 扩展模块有问题?我应该怎么做才能开始工作?

4

4 回答 4

1

在您发现的第一个代码块中,它/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php存在。当您尝试包含此文件时,您永远不会使用完全相同的字符串。如果你这样做,它应该工作。

编辑:你试过了,但失败了。在这种情况下,它看起来像一个权限问题。如果您对该文件没有读取权限,则第一个测试将起作用,但包含该文件将失败。

于 2011-04-21T22:02:27.043 回答
0

你已经改变了你的斜线。这可能是个问题。

于 2011-04-21T21:59:35.737 回答
0

永远不要在路径名中使用 \ 反斜杠。/使用适用于 Windows 和 Un*x 服务器的正斜杠。

此外,两台服务器上的基本目录名称也不太可能相同。使其可重定位并替换/home/p003/htdocsDOCUMENT_ROOT

include "$_SERVER[DOCUMENT_ROOT]/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php";

注意双引号。

如果可能,我会进一步建议避免混合大小写的文件名。

于 2011-04-21T22:06:21.257 回答
0

这就是您做错的事情,您实际上试图在每次尝试中都包含 FALSE 。做这样的事情

include '/path/to/file.php' == "OK";

等于

include FALSE;

这可能是你想做的

if((include '/path/to/file.php') == "OK") { echo("works"); }

其他 SO 用户忽略了这一事实,因为您的路径很长,比较隐藏在您的代码块中。

于 2011-04-21T22:31:00.100 回答