【问题标题】:OpenId library (include files are not found by script)OpenId 库(脚本找不到包含文件)
【发布时间】:2009-10-06 12:04:00
【问题描述】:

我一直在尝试在我的网站中实现 openid 功能。我下载了 JanRain 的库。

我在 classes 目录中提取了“Auth”文件夹,并按照“example”文件夹中的示例在 include 目录中创建了 try_auth.php、finish_auth.php、common.php 文件。

现在,当我点击 openid 选择器链接时,我会看到一条错误消息,提示“找不到 openid.php”文件。

此文件存在于 Auth 目录中。

我更正了它,然后我收到一个不同的错误,上面写着“未找到 'Auth/Yadis/HTTPFetcher.php'。

如果我坐下来单独更改 auth 文件夹中每个文件的 require 路径,那么这将需要很长时间。

我的apps目录结构是这样的
应用程序
课程
身份验证(openid 库)
配置
元素
包括
意见
网络根
index.php

请帮助我我做错了什么。如何设置包含路径,以便所有文件自动采用各自的路径。

谢谢

【问题讨论】:

    标签: php openid


    【解决方案1】:

    as the documentation states(你没有提到版本,所以我假设你使用的是 2.x.x),这个包中的 Auth/ 目录必须在你的 PHP include path 中。有various ways 可以做到这一点:php.inihttpd.conf/.htaccessini_set(),...如果你在你的php.ini 中这样做,你的应用程序目录是/path/to/your/app,它看起来像这样:

    ; UNIX: "/path1:/path2"
    include_path = ".:/php/includes:/path/to/your/app/classes"
    ;
    ; Windows: "\path1;\path2" or "c:/path1;c:/path2"
    ;include_path = ".;c:/php/includes;c:/path/to/your/app/classes"
    

    【讨论】:

    • :-) 谢谢 ax 先生 我认为您的解决方案似乎是一个有效的解决方案,将尽快尝试。谢谢你的帮助。我很感激。
    【解决方案2】:

    文件在那里,你只是没有正确设置路径。

    你说这是它正在寻找 'Auth/Yadis/HTTPFetcher.php' 的路径 您可能需要添加完整路径,如下所示:

    /var/www/html/whaterver/Auth/Yadis/HTTPFetcher.php
    

    /this/is/where/you/put/the/path/to/the/file/Auth/Yadis/HTTPFetcher.php
    

    只需执行此命令即可找到基本路径并将其附加到您的文件路径

    echo `pwd`;
    

    注意:这些是反引号而不是 pwd 命令周围的单引号

    编辑:

    您只需将其添加到您尝试包含在脚本中的文件中。

    示例:

    你的文件在这里:/var/www/html/index.php

    您需要在此处包含此文件:/classes/package/files.php

    这个文件:/classes/package/files.php 知道包中所有其他文件的位置,因此无需编辑其中任何一个。

    但是您确实需要编辑 /var/www/html/index.php 文件并添加一些内容:

    include('/var/www/html/classes/packages/files.php');
    

    一旦你在你的脚本中有这个,它应该知道其他所有东西在哪里。

    或者正如@ax 所说,这看起来是一个 php.ini 配置

    希望对你有帮助

    【讨论】:

    • 感谢您的回答。 :-D 亲爱的,“Auth”文件夹中有大约 40 个文件。你还想让我对每个文件都这样做。?如果我这样做,那将需要很长时间。我敢打赌有一个更好的解决方案。不是吗?
    • 不是每个文件,而是包含这些文件到您的脚本的文件。
    【解决方案3】:

    您可以使用 set_include_path 函数调用 (http://php.net/set_include_path) 来设置包含路径,如果这是您的要求...

    【讨论】:

      【解决方案4】:

      执行 getcwd 以找到您所在的目录并设置适当的 chdir(s) 来解决您的问题。这是一个肮脏的解决方案,但它应该以最小的努力工作。

      【讨论】:

      • 如果它能够解决我的问题,我早就这样做了。 :-)
      猜你喜欢
      • 2020-06-08
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      相关资源
      最近更新 更多