包括()它不起作用

问题描述:

我有问题,在服务器包含()函数不想工作,我不知道为什么?包括()它不起作用

我:

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 我不知道如何迫使它的工作。 HELP 我使用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扩展模块?我应该怎么做才能开始工作?

+0

只是使用'include('/ home/...');' – Aif 2011-04-21 22:01:35

+0

我尝试了第一个建议但没有成功后更新了我的答案。也许这是一个权限问题。你(服务器)对你想包含的文件有读权限吗? – Demento 2011-04-21 23:20:31

+0

脚本'IntelliSMS.php'返回什么?也就是说,它是否用'return'语句(它应该用于你的用法)退出?还是它会'回显'某些东西(这不会足以满足你的使用)? – 2011-04-22 02:35:42

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

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

+0

嗯我已经改变了阅读和执行的权利,它仍然无法正常工作:/我将添加所有权利和检查... – canimbenim 2011-04-22 10:28:45

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

+0

我已编辑我的帖子,因为所有这些不起作用:/ – canimbenim 2011-04-21 22:33:07

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

此外,两个服务器上的基本目录名称不太可能相同。让它再定位,并与DOCUMENT_ROOT取代/home/p003/htdocs像这样:

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

注意双引号。

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

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

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

等于该

include FALSE; 

这可能是你想要做

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

其他SO用户忽略了这个事实,因为你的路那么长的东西,比较隐藏在你的代码块中。

+0

我有: if (file_exists('/ home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')){ echo“1 works
”; } else { echo“文件1不存在
”; } 如果(包括($ _SERVER [DOCUMENT_ROOT] “/ Project2的/库/ IntelliSMS/SendScripts/IntelliSMS.php”)== 'OK'。) { \t回声包括1-作品
'; } else { \t echo'Step 1 fail
'; } 如果(包括( “/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php”)== 'OK') { \t回声INCLUDE 2件作品
'; } else { \t echo'Step 2 fail
'; } 而且还是一样的 – canimbenim 2011-04-21 22:44:15