我有问题,在服务器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扩展模块的问题?我应该怎么做才能开始工作?
答案 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用户忽视了这一事实,因为您的路径太长,比较会隐藏在您的代码块中。