【问题标题】:My site has been crash when i add some php code [closed]当我添加一些 php 代码时,我的网站已经崩溃 [关闭]
【发布时间】:2012-12-19 05:31:42
【问题描述】:

当我在模板文件夹的 index.php 中添加这些 php 代码时,我的网站已经崩溃:

<?php
                    if (!class_exists( 'VmModel' )) require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'vmmodel.php');
                    if (!class_exists( 'VmConfig' )) require_once(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php');
                    if(!class_exists('VirtueMartCart')) require_once(JPATH_VM_SITE.DS.'helpers'.DS.'cart.php');
                    $hv_cart = VirtueMartCart::getCart(true);
                    foreach( $hv_cart->products as $pkey =>$prow ){?>
                        <li class="ui-widget-content ui-corner-tr" style="width: 48px;">
                            <?php echo $prow->image-> displayMediaThumb('style="height: 36px; width: 100%"',false); ?>
                            <span>SL:<?php echo $prow->quantity; ?></span>
                            <span class="hv_hidden" product_id="<?php echo $prow->virtuemart_product_id; ?>" quantity="<?php echo $prow->quantity; ?>"> </span>
                        </li>
                    <?php
                    }
                ?>

当我访问主页时,服务器显示错误:

致命错误:main() [function.main]: The 脚本试图执行一个方法或访问一个不完整的属性 目的。请确保类定义“VmImage”的 您尝试操作的对象已加载之前 unserialize() 被调用或提供一个 __autoload() 函数来加载 类定义 C:\xampp\htdocs\chovietnam.com\templates\it_thestore4\index.php 上 第 68 行

第 68 行错误是

<?php echo $prow->image-> displayMediaThumb('style="height: 36px; width: 100%"',false); ?>

我第一次访问主页时它仍然可以正常工作,但是当我再次访问主页时,它会出错。而且我清除了浏览器的所有cookie,缓存......它会再次正常并在我再次访问主页时出错。但是如果我访问其他页面(不是主页,并且这些代码仍然在该页面中工作),则不会出现错误 任何人都可以帮我解决这个问题,我使用 Joomla 2.5 和 Virtuemart 2。谢谢

【问题讨论】:

    标签: php joomla joomla2.5 virtuemart


    【解决方案1】:

    您的问题是在 PHP 代码中的某处(不一定是您编写的代码),unserialize 被调用。数据表示在调用unserialize 时不存在的类。因此,PHP 不能真正反序列化它:它不能创建一个不存在的类的实例。为VmImage 添加class_exists 检查和require_once 语句。

    【讨论】:

    • 我第一次访问主页时它仍然可以正常工作,但是当我再次访问主页时,它会出错。而且我清除了浏览器的所有cookie,缓存......它会再次正常并在我再次访问主页时出错。错误只出现在主页,而不出现在其他页面(虽然我的代码也可以在这个页面上工作)
    • 我已经有class_exists签入上面的代码
    • @user1912285:我知道你已经有了一些。添加另一个,但为VmImage
    • 谢谢,但我需要图片来展示产品,你知道从购物车中获取图片、id、数量的另一种方法吗?
    • @user1912285:我的意思是,如果您确保在您的 PHP 脚本中 VmImagerequired,那么您正在做的事情应该可以工作。你已经为VmModelVmConfig 做了这些;现在为VmImage做吧。
    【解决方案2】:

    听起来像: 当您访问包含上述代码的站点时,VM 会在 session/cockie 中存储一些东西。 当您再次访问时,它将失败,因为会话已恢复,但您的代码加载的 php 类当时没有加载。

    尝试尽早将 VM 类加载到自动加载函数中,或者更好地加载 VM 类

    【讨论】:

      【解决方案3】:

      试试这个:

      <? php echo $prow->image-> displayMediaThumb('style=\"height: 36px; width: 100%\"',false); ?>
      

      【讨论】:

      • 你的意思是我用“
      • 双引号不需要在单引号内转义。
      • 尝试在双引号前放回斜线
      • 我试试这个,但错误仍然出现
      猜你喜欢
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多