在网站之间包含文件

时间:2014-04-12 00:39:21

标签: php

我有几个网站的功能就像一个大型CMS,所有网站都基于一个中央网站托管。我在下面的一个卫星网站上发布了代码,以说明我是如何包含文件的。

问题在于我刚刚在线激活了PDO,它引发了各种各样的问题。 PDO和我正在研究的.htaccess文件之间显然存在冲突。与此同时,我的包含不包括在内。

所以我想问一下是否有一种在线网站之间包含文件的替代方法,至少在我能修复PDO / Apache问题之前。感谢。

$path = $_SERVER['REQUEST_URI'];
$path2 = str_replace('/', '', $path);

$Section  = current(explode('/', ltrim($path, '/'), 2));  // Main line 
$Sections = array('Introduction', 'Topics', 'World', 'Ecosymbols', 'Glossary', 'Reference',  'Links', 'About', 'Search');

if ( ! in_array($Section, $Sections)) 
{ 
 // die('Invalid section: ' . $Section); 
} 

switch (PHP_OS)
{
 case 'Linux':
 $BaseINC = '/home/geobear2/public_html';
 $BaseURL = 'http://www.geobop.org';
 break;

 case 'Darwin':
 // Just some code for my local includes...
 break;

 default:
 break;
}

include ($BaseINC."/2B/dbc.php");

注意:以下是我从一个受影响网站的主页获取的错误消息。 ACE.php是包含我在上面发布的代码的文件的名称。

警告:include(/home/geobear2/public_html/2B/dbc.php)[function.include]:无法打开流:第67行/home/symbolos/public_html/1A/ACE.php中的权限被拒绝< / p>

警告:include()[function.include]:无法打开'/home/geobear2/public_html/2B/dbc.php'(include_path ='。:/ usr / lib / php:/ usr / local /第67行/home/symbolos/public_html/1A/ACE.php中的lib / php')

警告:include(/home/geobear2/public_html/2B/inc/A1.php)[function.include]:无法打开流:第31行/home/symbolos/public_html/index.php中的权限被拒绝< / p>

警告:include()[function.include]:无法打开'/home/geobear2/public_html/2B/inc/A1.php'以包含(include_path ='。:/ usr / lib / php:/ usr /第31行/home/symbolos/public_html/index.php中的local / lib / php')

1 个答案:

答案 0 :(得分:2)

我相信你问的是错误的问题......你在你的应用程序中“包含”文件的方式有点不对,我可能会说,“oldschool”。

您不应该包含其他网站...如果它们托管在您可以使用的同一台服务器上(如果您有足够的访问权限,某些服务器将禁止您执行此操作),包含的绝对路径。

另外,你的方法会减慢你的速度,我怀疑它是否起作用......

请参阅此处的工作原理:http://ro1.php.net/manual/en/function.include.php +++交叉引用require,require_once,include_once。

优雅的解决方案: 如果您正确阅读文档并使用它,授予您的服务器有更新版本的PHP(5.3至少从我记得,我可能是错的),您可以开始使用命名空间。

文档:http://www.php.net/manual/en/language.namespaces.php

这是在应用程序中使用一组通用类的绝佳方法。 OOP知识是必须的,因为我无法指导你,在线有数百个精彩的教程。