include()它不起作用

时间:2011-04-21 21:57:57

标签: php apache zend-framework include-path

我有问题,在服务器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目录它也不想工作:/


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

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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您不应该在路径名中使用\ backslash。使用适用于Windows和Un * x服务器的正斜杠/

此外,两个服务器上的基本目录名称不太可能相同。使其可重定位并将/home/p003/htdocs替换为DOCUMENT_ROOT,如下所示:

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

注意双引号。

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

答案 3 :(得分:0)

这就是你做错了什么,你实际上试图在每次尝试中包含FALSE。做这样的事

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

等于

include FALSE;

这可能就是你想做的事情

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

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