为什么我的代码单独工作,但不是当我合并它与我的控制器



我把这段代码写在一个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): failed to open stream: No such file or目录

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

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

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

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


我尝试了几种方法。我尝试将test.php导入我的视图或控制器,但我仍然得到同样的错误。我尝试使用Yii::app()->basePath,它给出了同样的问题。

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

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

如果你知道服务器的绝对路径,你可以像/var/www/MySitec:mysite一样使用它,如果你不知道,那么你可以使用相对路径

$_SERVER["DOCUMENT_ROOT"]在PHP 5.3下运行良好,不确定是否下面检查您的版本。试着在MySite部分之前删除'/',因为变量已经为你做了,所以它可能会像localhost//MySite一样打印,虽然我不确定这应该或不应该工作。)

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

最新更新