【问题标题】:include() it does not work包括()它不起作用
【发布时间】:2011-08-10 15:35:25
【问题描述】:

我有一个问题,服务器上的 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 扩展模块有问题?我应该怎么做才能开始工作?

【问题讨论】:

  • 只用include('/home/…');
  • 在您尝试我的第一个建议但没有成功后,我更新了我的答案。也许这是一个权限问题。您(服务器)是否对您要包含的文件具有读取权限?
  • 脚本IntelliSMS.php返回什么?也就是说,它是退出 return 语句(它应该供您使用)还是 echo 某事(这对于您的使用来说是不够的)?

标签: php apache zend-framework include-path


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 嗯我已经更改了读取和执行的权限,但它仍然不起作用:/我将添加所有权限并检查...
    【解决方案3】:

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

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

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

    注意双引号。

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

    【讨论】:

      【解决方案4】:

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

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

      等于

      include FALSE;
      

      这可能是你想做的事

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

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

      【讨论】:

      • 我有: if (file_exists('/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php')) { echo "1 works
        "; } else { echo "文件1不存在
        "; } if(include ($_SERVER[DOCUMENT_ROOT]."/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php") == 'OK') { echo 'INCLUDE 1 works
        '; } else { echo '步骤 1 失败
        '; } if(include ("/home/p002/htdocs/Project2/library/IntelliSMS/SendScripts/IntelliSMS.php") == 'OK') { echo 'INCLUDE 2 works
        '; } else { echo '步骤 2 失败
        '; } 还是一样
      猜你喜欢
      • 2015-02-21
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 2019-12-01
      相关资源
      最近更新 更多