【问题标题】:How come my code works separately but not when I merge it with my controller?为什么我的代码单独工作,但当我将它与我的控制器合并时却不行?
【发布时间】:2015-06-10 00:09:20
【问题描述】:

我在test.php 文件中编写了这段代码。

<?php 

include ($_SERVER["DOCUMENT_ROOT"].'/MySite/protected/MyYouTube/google/src/Google/autoload.php'); 

require_once ($_SERVER["DOCUMENT_ROOT"].'/MySite/protected/MyYouTube/google/src/Google/Client.php');  
require_once ($_SERVER["DOCUMENT_ROOT"].'/MySite/protected/MyYouTube/google/src/Google/Service/YouTube.php'); 
?>

如果我像这样访问这个文件:localhost/MySite/protected/MyYouTube/test.php 它可以工作,但是如果我将相同的代码复制到与test.php 位于同一文件夹下的控制器中,我会得到:

include(Google_Service.php): 无法打开流: 没有这样的文件或 目录

与导入没有冲突。事实上,控制器和视图可以是空的,但我仍然得到相同的东西。

显然,当autoload.php 未实际加载时会发生这种情况。

当代码集成到网站时,它怎么可能抛出这个错误?

这是我网站的路径: localhost/MySite/index.php/user/view 看来我访问文件的方式很重要。


我尝试了几件事。我尝试将test.php 导入到我的视图或控制器中,但仍然出现同样的错误。我尝试使用Yii::app()-&gt;basePath,它给出了同样的问题。

路径是正确的,我检查了好几次。我该如何解决这个问题?

【问题讨论】:

    标签: php yii google-api-php-client


    【解决方案1】:

    包含路径是实际的服务器路径,而不是站点路径,如果你在开头使用/,你告诉它在服务器根目录中查找。

    如果您知道服务器中的绝对路径,您可以像 /var/www/MySitec:\mysite 这样使用它,如果您不知道,则使用相对路径。

    【讨论】:

      【解决方案2】:

      $_SERVER["DOCUMENT_ROOT"] 适用于 PHP 5.3,不确定下面是否检查您的版本。尝试删除 MySite 部分之前的“/”,因为变量已经为您完成了它,所以它可能会像 localhost//MySite 一样打印,尽管我不确定这是否应该或不应该工作。 ]

      此外,自动加载 php 应该使用 require_once 函数加载,而不是使用 include。祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 2016-11-13
        • 1970-01-01
        相关资源
        最近更新 更多