我没有看到错误..
我在web根目录下有一个索引文件。索引文件设置一个包含基本路径的数组,如下所示:
$medium = 'web';
$framework = '_magma';
$js_lib = '_lava';
$path_info = pathinfo($_SERVER['SCRIPT_NAME']);
$base_path = $path_info['dirname'];
print_r($base_path);
$paths = ['root' => $base_path,
'framework' => $framework,
'js_lib' => $js_lib,
'medium' => '/' . $medium,
'uri' => $_SERVER['REQUEST_URI']];
try {
if (!include($paths['root'] . $paths['framework'] . '/core/AutoLoader.php')) {
throw new Exception ('<b>Error - AutoLoader is missing</b>');
}
$loader = new AutoLoader($paths);
$appStack = new BootStrap($paths);
$app = new StartPage($paths, $appStack->getConfig());
$app->start();
} catch (Exception $e) {
echo
'<p><b>EXCEPTION</b><br />Message: '
. $e->getMessage()
. '<br />File: '
. $e->getFile()
. '<br />Line: '
. $e->getLine()
. '</p>';
}
index然后在'/ framework / core'下实例化BootStrap,并通过构造函数传递上面的数组,该构造函数在类本身中设置它。
BootStrap然后在'/ framework / web'下实例化StartPage,并再次通过构造函数传递paths数组。
然后,StartPage使用paths变量实例化一个设置样式表的类,位于“/ web / stylesheets”下,如下所示:
class CssInclusion {
private $paths;
private $include_css;
public function __construct($paths, $include_css) {
// set variables
$this->paths = $paths;
$this->include_css = $include_css;
}
public function loadStylesheets() {
// set path
$directory_path = $this->paths['root'] . $this->paths['medium']. '/stylesheets';
// loop through stylesheet array
foreach ($this->include_css as $stylesheet) {
// include stylesheet, handle exceptions
$file_path = $directory_path . '/' . $stylesheet . '.css';
print_r($file_path);
try {
if (!is_file($file_path)) {
throw new Exception ('<b>Error - missing stylesheet:</b> ' . $file_path . '<br />');
}
echo '<link rel="stylesheet" type="text/css" href="' . $file_path . '" />';
} catch (Exception $e) {
echo
'<p><b>EXCEPTION</b><br />Message: '
. $e->getMessage()
. '<br />File: '
. $e->getFile()
. '<br />Line: '
. $e->getLine()
. '</p>';
}
}
}
}
我没有例外,但样式表没有加载。这很奇怪。你的新眼睛可以看到我错过了什么吗?
答案 0 :(得分:1)
您的根路径是绝对系统路径,如srv/www
。
但样式表路径必须是浏览器可以访问的相对路径或绝对路径。
http://yoursite/css
或/css
我得到了我的basePath:
$pathInfo = pathinfo($_SERVER['SCRIPT_NAME']);
$basePath = $pathInfo['dirname'];
也许您只需更改该行:
$directory_path = $this->paths['medium']. '/stylesheets';
我不知道$this->paths['medium']
包含哪些内容?!