我有几个网站的功能就像一个大型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')
答案 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知识是必须的,因为我无法指导你,在线有数百个精彩的教程。