好的以下问题我正在尝试提供尽可能多的信息。
我为学习目的写了一个自定义cms。
作为开发环境,我使用带有precission32盒的流浪汉。 (情况1)
由于不重要的原因,我暂时与Xampp合作。 (情况2)
上周我又创建了一个流浪汉环境(ubuntu trysty 64)。 (情况3)
如何构建。
或情况1我不记得它是如何建立的。
情况2(xampp):
情况3(流浪汉)PHP 5.6.15 Apache 2.4.17 Standard(for Xampp)启用了apache模块
PHP 5.5.9 Apache 2.4.7所有apache模块都安装在xampp
中
问题
在情况1中,一切都运转良好
在情况2中,一切正常。没问题
在情况3中,我在包含
时遇到致命错误
我收到以下错误:
Warning: include(libs/DKW\Tracking\Logged.php): failed to open stream: No such file or directory in /vagrant/DKW-fms/index.php on line 40
Warning: include(): Failed opening 'libs/DKW\Tracking\Logged.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /vagrant/DKW-fms/index.php on line 40
Fatal error: Class 'DKW\Tracking\Logged' not found in /vagrant/DKW-fms/public/main/template/nav.php on line 2
logged.php文件确实存在
index.php中的第40行
/**
* Load classes from libs
*/
spl_autoload_register(function ($class) {include LIBS. $class.".php";});
LIBS在不同的文件中定义。
define ('LIBS','libs/');
所以现在致命的错误:
nav.php中的第2行:
$this->logged = new DKW\Tracking\Logged();
上述代码是在情况1中构建的,并且工作正常。 在其他情况下,据我所知,没有任何改变可能导致这些问题。
我无法弄清楚出了什么问题。特别是因为在Xampp中绝对没有问题。 使用相同的文件是因为在两种环境中路径都指向同一文件夹。
希望有人可以给我一个指向哪里看的指针,因为我再也看不到了。
编辑:
因为我对我的文件夹结构的权利有了第二个想法,所以我添加了我的虚拟主机文件。也许出现问题导致这个问题。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName dkwfms.com
ServerAlias dev.dkwfms.com
DocumentRoot /vagrant/DKW-fms
<Directory />
Options FollowSymLinks
AllowOverride FileInfo
</Directory>
<Directory /vagrant/DKW-fms>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride FileInfo
Order allow,deny
Allow from all
Require all granted
</Directory>
loglevel warn
ErrorLog ${APACHE_LOG_DIR}/error_dkw-fms.log
CustomLog ${APACHE_LOG_DIR}/access_dkw-fms.log combined
</VirtualHost>
问题已解决
在错误中,我注意到包含部分中的尾部斜杠。 在脸上,埃尔玛也向我指出了那些拖尾的斜线。 为此,我不得不重写我的autoload_register。
如果有人也面临这个问题我也做了以下
我的类文件夹在另一个文件中定义(解决方案不需要这个)
define ('LIBS','libs/');
现在为自动加载器:
spl_autoload_register(function($className)
{
$namespace=str_replace("\\","/",__NAMESPACE__);
$className=str_replace("\\","/",$className);
$class=LIBS . (empty($namespace)?"":$namespace."/")."{$className}.php";
include_once($class);
});
希望这会有助于其他人。
答案 0 :(得分:0)
假设XAMPP堆栈在Windows机器上运行,而流浪者机器是UNIX。
您应该检查文件名是否与班级匹配。 这意味着'Logged'应该指向'Logged.php'而不是'logged.php'作为Unix文件系统是区分大小写的。
此致