Re: Completely stumped (still) [message #185042 is a reply to message #185033] |
Tue, 25 February 2014 01:59 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 2/24/2014 6:53 PM, Richard Yates wrote:
> On Mon, 24 Feb 2014 14:51:23 -0800, Richard Yates
> <richard(at)yatesguitar(dot)com> wrote:
>
>> Sorry for the vague subject heading but i didn't know what else to put
>> there. I have a script that works fine on my local server, and that I
>> am using with no problem on three other production servers.
>>
>> However, on another production server it is failing in a very weird
>> way. I get the message "Fatal error: cannot use string as offset in
>> array" when it gets to this line:
>>
>> $fname=$_SESSION['to'][$ct]['fname'];
>>
>> I var_dumped the $_SESSION['to'] array to see what was going on and
>> got this:
>>
>> string(23) "dyates(at)salemharvest(dot)org"
>>
>> So, the error seems to make sense given what is apparently in
>> $_SESSION[to']. But that is not what is supposed to be in
>> $_SESSION['to']. On the other servers - with IDENTICAL code - the
>> script works and the variable dump is like this, as it is supposed to
>> be:
>>
>> array (size=2)
>> 0 =>
>> array (size=3)
>> 'fname' => string 'Dick' (length=4)
>> 'lname' => string 'Yates' (length=5)
>> 'email' => string 'dyates(at)salemharvest(dot)org' (length=23)
>> 1 =>
>> array (size=3)
>> 'fname' => string 'Benjamin' (length=8)
>> 'lname' => string 'Rasmus' (length=6)
>> 'email' => string 'benjamin(at)harvest(dot)org' (length=25)
>>
>> The only difference I can find in the servers is that the ones that
>> work are running php5.3 and the bad one is running php5.2. But I
>> cannot see how that could account for this error.
>>
>> At this point I do not even know where to look to track this down.
>> Does anyone have any ideas?
>>
>> Richard Yates
>
> I inserted var_dump successively at each stage in the script to see
> where it changes from the (correct) array to a (incorrect) string. I
> narrowed it down to ONE statement, but cannot see how that could
> possibly change the variable. Here's the section with var_dump, then
> the one statement, and then the var_dump repeated exactly.
>
> var_dump($_SESSION['to']);
> $to=$_SESSION['to'][$ct]['email'];
> var_dump($_SESSION['to']);
>
> The output of the two var_dumps is:
>
> The first:
> array(1) { [0]=> array(3)
> { ["fname"]=> string(4) "Dick"
> ["lname"]=> string(5) "Yates"
> ["email"]=> string(23) "dyates(at)salemharvest(dot)org" }
> }
>
> The second:
> string(23) "dyates(at)salemharvest(dot)org"
>
> If I comment out the second line (that sets $to), the second var_dump
> comes out correct. Am I losing my mind?
>
>
The failing server has register_globals enabled.
This value changed to default to OFF in PHP 4.2, has been deprecated in
PHP 5.3, and removed in PHP 5.4. If your hosting company won't disable
it, find another hosting company.
It sounded like a good idea when it was first implemented many years
ago, but has caused more problems than it has solved. Therefore it has
been removed from current releases.
--
==================
Remove the "x" from my email address
Jerry Stuckle
jstucklex(at)attglobal(dot)net
==================
|
|
|