Page 2 of 4 FirstFirst 1234 LastLast
Results 11 to 20 of 39
  1. #11
    Join Date
    Aug 2007
    Location
    Gijón, Asturias, Spain
    Posts
    2,586
    Plugin Contributions
    30

    Default Re: PHP 5.4 warnings: Illegal string offset

    After using php 5.4.7 on my local development server it threw this warning when entering into an order detail page in the admin.
    [07-May-2013 21:53:52 UTC] PHP Warning: Illegal string offset 'id' in D:\.....\public_html\tienda\includes\modules\payment\cod.php on line 41

    After reading this post
    http://www.zen-cart.com/showthread.p...om-empty-value

    I changed this
    PHP Code:
    if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_COD_ZONE 0) ) {
            
    $check_flag false;
            
    $check $db->Execute("select zone_id from " TABLE_ZONES_TO_GEO_ZONES " where geo_zone_id = '" MODULE_PAYMENT_COD_ZONE "' and zone_country_id = '" $order->delivery['country']['id'] . "' order by zone_id"); 
    to this
    PHP Code:
    if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_COD_ZONE 0) && isset($order->delivery['country']['id']) ) {//steve added last clause for php 5.4.7
            
    $check_flag false;
            
    $check $db->Execute("select zone_id from " TABLE_ZONES_TO_GEO_ZONES " where geo_zone_id = '" MODULE_PAYMENT_COD_ZONE "' and zone_country_id = '" $order->delivery['country']['id'] . "' order by zone_id"); 
    The line 41 mentioned in the debug log is the $check = $db->Execute...

    The error stopped and the page seems to work ok.
    Steve
    github.com/torvista: Spanish Language Pack, Google reCaptcha, Structured Data, Multiple Copy-Move-Delete, Image Checker, BackupMySQL Admin/Auto...

  2. #12
    Join Date
    Jun 2009
    Posts
    9
    Plugin Contributions
    0

    Default Re: PHP 5.4 warnings: Illegal string offset

    How to fix line 355 of order.php?
    Code:
    'shipping_cost' => $_SESSION['shipping']['cost'],

  3. #13
    Join Date
    Jul 2007
    Posts
    2,169
    Plugin Contributions
    16

    Default Re: PHP 5.4 warnings: Illegal string offset

    Quote Originally Posted by lat9 View Post
    OK, according to http://php.net/manual/en/language.types.string.php:

    "As of PHP 5.4 string offsets have to either be integers or integer-like strings, otherwise a warning will be thrown. Previously an offset like "foo" was silently cast to 0."

    It looks like a relatively small change to three files removes the warning:

    /includes/modules/pages/checkout_shipping/header_php.php, starting around line 70:
    Code:
    /*-bof BUGFIX: lat9-d
      require(DIR_WS_CLASSES . 'order.php');
      $order = new order;
      -eof BUGFIX: lat9-d */
    // register a random ID in the session to check throughout the checkout procedure
    // against alterations in the shopping cart contents
    if (isset($_SESSION['cart']->cartID)) {
      if (!isset($_SESSION['cartID']) || $_SESSION['cart']->cartID != $_SESSION['cartID']) {
        $_SESSION['cartID'] = $_SESSION['cart']->cartID;
      }
    } else {
      zen_redirect(zen_href_link(FILENAME_TIME_OUT));
    }
    
    // if the order contains only virtual products, forward the customer to the billing page as
    // a shipping address is not needed
    //  if ($order->content_type == 'virtual') { BUGFIX: lat9-d
      if ($_SESSION['cart']->get_content_type() == 'virtual') {  /* BUGFIX: lat9-a */
    //    $_SESSION['shipping'] = 'free_free';  BUGFIX: lat9-d
        $_SESSION['shipping']['title'] = 'free_free';
        $_SESSION['shipping']['id'] = 'free_free';  /* BUGFIX: lat9-a */
        $_SESSION['shipping']['cost'] = 0;  /*BUGFIX: lat9-a */
        $_SESSION['sendto'] = false;
        zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
      }
      
      require(DIR_WS_CLASSES . 'order.php');  /* BUGFIX: lat9-a */
      $order = new order;  /* BUGFIX: lat9-a */
    /includes/modules/pages/checkout_payment/header_php.php (line 36):
    Code:
    if (isset($_SESSION['shipping']['id']) && $_SESSION['shipping']['id'] == 'free_free' && defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER') /*-bof BUGFIX lat9-a */ && $_SESSION['cart']->get_content_type() != 'virtual' /*-eof BUGFIX lat9-a */ && $_SESSION['cart']->show_total() < MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) {
      zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
    }
    /includes/modules/pages/checkout_confirmation/header_php.php (line 43):
    Code:
    if (isset($_SESSION['shipping']['id']) && $_SESSION['shipping']['id'] == 'free_free' && defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER') /*-bof BUGFIX lat9-a */ && $_SESSION['cart']->get_content_type() != 'virtual' /*-eof BUGFIX lat9-a */ && $_SESSION['cart']->show_total() < MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) {
    Hey lat9 I did all this and still getting

    code
    [31-Oct-2013 15:09:14 America/New_York] PHP Warning: Illegal string offset 'title' in /home/xxxxxx/public_html/includes/classes/order.php on line 354
    [31-Oct-2013 15:09:14 America/New_York] PHP Warning: Illegal string offset 'cost' in /home/xxxxxx/public_html/includes/classes/order.php on line 356
    Any ideas thanks.
    Is your site Upgraded to the current version 1.5.4 Yet?
    zencart-upgrades-website-installation

  4. #14
    Join Date
    Jan 2004
    Posts
    66,373
    Blog Entries
    7
    Plugin Contributions
    274

    Default Re: PHP 5.4 warnings: Illegal string offset

    Quote Originally Posted by lat9 View Post
    Using a stock v1.5.1 install (localhost) running php 5.4.8 on Windows 7. Added the product New v1.2 -> Downloads -> Single Download to my cart, signed in and clicked the Checkout button. I was properly redirected to the checkout_payment page, but had two debug*.log files generated:

    Code:
    [19-Nov-2012 20:12:07 Europe/Berlin] PHP Warning:  Illegal string offset 'cost' in C:\xampp\htdocs\v1.5.1\includes\classes\order.php on line 355
    
    [19-Nov-2012 20:12:07 Europe/Berlin] PHP Warning:  Illegal string offset 'title' in C:\xampp\htdocs\v1.5.1\includes\modules\pages\checkout_shipping\header_php.php on line 88
    Code:
    [19-Nov-2012 20:12:08 Europe/Berlin] PHP Warning:  Illegal string offset 'cost' in C:\xampp\htdocs\v1.5.1\includes\classes\order.php on line 355
    
    [19-Nov-2012 20:12:08 Europe/Berlin] PHP Warning:  Illegal string offset 'id' in C:\xampp\htdocs\v1.5.1\includes\classes\shipping.php on line 32
    
    [19-Nov-2012 20:12:08 Europe/Berlin] PHP Warning:  Illegal string offset 'id' in C:\xampp\htdocs\v1.5.1\includes\classes\shipping.php on line 32
    
    [19-Nov-2012 20:12:08 Europe/Berlin] PHP Warning:  Illegal string offset 'id' in C:\xampp\htdocs\v1.5.1\includes\modules\order_total\ot_shipping.php on line 41
    
    [19-Nov-2012 20:12:08 Europe/Berlin] PHP Warning:  Illegal string offset 'id' in C:\xampp\htdocs\v1.5.1\includes\modules\order_total\ot_shipping.php on line 41
    In each case, the illegal offset is associated with an undefined array element. For example, line 355 of order.php contains:
    Code:
                            'shipping_cost' => $_SESSION['shipping']['cost'],
    I'm not quite sure how to proceed. Are these warnings indicative of something that might become errors in a future version of PHP?
    Quote Originally Posted by rozdesignz View Post
    [04-Feb-2013 06:37:25 Australia/Melbourne] PHP Warning: Illegal string offset 'cost' in /../../../htdocs/store/includes/classes/order.php on line 349

    not sure how to remedy this? thanks, Lora
    Quote Originally Posted by zch0071 View Post
    How to fix line 355 of order.php?
    Code:
    'shipping_cost' => $_SESSION['shipping']['cost'],
    The following changes are incorporated into the next ZC version to handle the errors reported in this thread:

    https://github.com/zencart/zencart/c...2cb78fc86946c9

    https://github.com/zencart/zencart/c...6deb80026d2886
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

  5. #15
    Join Date
    Apr 2010
    Posts
    265
    Plugin Contributions
    1

    Default Re: PHP 5.4 warnings: Illegal string offset

    When is the next zc version coming out? I have until Dec 1st before my host forces me into php 5.4, and I have looked at multiple pages of fixes, and this appears to be a very convoluted problem.

  6. #16
    Join Date
    Jan 2004
    Posts
    66,373
    Blog Entries
    7
    Plugin Contributions
    274

    Default Re: PHP 5.4 warnings: Illegal string offset

    It is indeed a complex problem.

    The links above are what will be included in the next version, specifically to address this problem.
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

  7. #17
    Join Date
    Apr 2010
    Posts
    265
    Plugin Contributions
    1

    Default Re: PHP 5.4 warnings: Illegal string offset

    Those two pages are missing one.

    includes/modules/shipping_estimator.php
    Add to line 46:
    Code:
     require_once('includes/classes/http_client.php'); // shipping in basket
    //PHP5.4 fix
    $order = new stdClass();
    /*
    // moved below and altered to include Tare
      // totals info
      $totalsDisplay = '';

  8. #18
    Join Date
    Sep 2004
    Posts
    2,420
    Plugin Contributions
    2

    Default Re: PHP 5.4 warnings: Illegal string offset

    Quote Originally Posted by DrByte View Post
    It is indeed a complex problem.

    The links above are what will be included in the next version, specifically to address this problem.
    Host just moved the account with a ZC 1.51 shop.

    Before the move was running PHP 5.4.15, with no errors appearing in /logs.

    But now, following the move to the newer server running PHP 5.4.20, I'm observing repeating cluster of errors in /logs, similar to those which others have posted to this thread.


    Code:
    [09-Nov-2013 17:32:20 America/Chicago] PHP Warning:  Illegal string offset 'title' in /home/acct/public_html/shop/includes/modules/pages/checkout_shipping/header_php.php on line 88
    
    [09-Nov-2013 17:32:20 America/Chicago] PHP Warning:  Illegal string offset 'cost' in /home/acct/public_html/shop/includes/classes/order.php on line 355
    
    [09-Nov-2013 17:32:20 America/Chicago] PHP Warning:  Illegal string offset 'id' in /home/acct/public_html/shop/includes/classes/shipping.php on line 32
    
    [09-Nov-2013 17:32:20 America/Chicago] PHP Warning:  Illegal string offset 'id' in /home/acct/public_html/shop/includes/classes/shipping.php on line 32
    
    [09-Nov-2013 17:32:20 America/Chicago] PHP Warning:  Illegal string offset 'id' in /home/acct/public_html/shop/includes/modules/order_total/ot_shipping.php on line 41
    
    [09-Nov-2013 17:32:20 America/Chicago] PHP Warning:  Illegal string offset 'id' in /home/acct/public_html/shop/includes/modules/order_total/ot_shipping.php on line 41
    So in this specific situation, might the two posted github 1.60 commits be compatible with 1.51 as well?

  9. #19
    Join Date
    Sep 2004
    Posts
    2,420
    Plugin Contributions
    2

    Default Re: PHP 5.4 warnings: Illegal string offset

    As a followup to my post above...

    In my attempt to squash the warnings filling up the Zen Cart /logs directory I visited the PHP Switcher in Control Panel. It was set to "native" (at the same time Zen Cart reports PHP 5.4.20).

    After switching to PHP 5.3, the catalog side of Zen Cart behaved well, but when I logged into the admin side I observed only white space. So I reset the switcher back to "native" everything was back to normal, except for the warnings continuing to fill /logs.

    To test things further I switched to "5.4", and also could not log into ZC admin. So back to "native" it is.

    Not sure of the diff between native and 5.4. More research to do.

    So is it safe to assume this issue will continue for the foreseeable future, until the PHP 5.4 error reporting issues are dealt with in ZC 1.5.2 and 1.6.0? Or will patch code will be available for ZC 1.5.1?

  10. #20
    Join Date
    Apr 2010
    Posts
    265
    Plugin Contributions
    1

    Default Re: PHP 5.4 warnings: Illegal string offset

    I did all of the code changes listed on this post, as well as the one in my previous post, and so far, so good.

    I would really like to know when 1.6.0, or 1.5.2 will be released though.

 

 
Page 2 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. Illegal string offset 'id' in order.php
    By marcopolo in forum General Questions
    Replies: 16
    Last Post: 25 Jul 2015, 04:31 PM
  2. Replies: 9
    Last Post: 23 Mar 2015, 08:42 AM
  3. v153 Illegal string offset 'id' in order.php
    By jeking in forum General Questions
    Replies: 0
    Last Post: 5 Sep 2014, 07:32 PM
  4. v151 PHP Warning: Illegal string offset 'id'
    By Nettric in forum Bug Reports
    Replies: 3
    Last Post: 30 May 2014, 06:53 AM
  5. Replies: 1
    Last Post: 30 Sep 2013, 07:39 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR