自定义CMS在Xampp中工作而不在流浪中(包括错误)

时间:2016-05-10 09:18:46

标签: php xampp vagrant

好的以下问题我正在尝试提供尽可能多的信息。

我为学习目的写了一个自定义cms。

作为开发环境,我使用带有precission32盒的流浪汉。 (情况1)

由于不重要的原因,我暂时与Xampp合作。 (情况2)

上周我又创建了一个流浪汉环境(ubuntu trysty 64)。 (情况3)

  

如何构建。

     

或情况1我不记得它是如何建立的。

     

情况2(xampp):

     
    

PHP 5.6.15 Apache 2.4.17 Standard(for Xampp)启用了apache模块

  
     情况3(流浪汉)

     
    

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);
});

希望这会有助于其他人。

1 个答案:

答案 0 :(得分:0)

假设XAMPP堆栈在Windows机器上运行,而流浪者机器是UNIX。

您应该检查文件名是否与班级匹配。 这意味着'Logged'应该指向'Logged.php'而不是'logged.php'作为Unix文件系统是区分大小写的。

此致