$_SESSION / $HTTP_SESSION_VARS behaviour

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Michael Windsor

    $_SESSION / $HTTP_SESSION_VARS behaviour

    I've been trying to integrate some PHP pages of my own with some
    existing code. The details of this are for the support forums for that
    code (where I have been asking questions), but I wonder if someone here
    can enlighten me as to why the problematic code is having the effect it is.

    For reasons I don't know, if the PHP version is 5 or greater,
    register_long_a rrays is false and $_SESSION exists, the following
    statement is executed:

    $HTTP_SESSION_V ARS = $_SESSION;

    This line is stopping any subsequent changes to the $_SESSION variable
    from being stored in the session file on the server - changes can be
    made, but are all lost at the end of the page processing and the value
    reverts to whatever it was before the script was executed.

    Is this behaviour by design? Why does it happen? Is there a standard
    reason why anyone would include a statement like this (security?)?

    I'm seeing this behaviour on PHP 5.1.3 / Win 2003 sp1 / IIS 6 and on PHP
    5.1.6 / Win XP sp2 / Apache 2.

    Thanks for any help!

    Regards,
    Mike
  • serkanhamarat@gmail.com

    #2
    Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

    Try this:

    $HTTP_SESSION_V ARS = &$_SESSION;

    Comment

    • Michael Windsor

      #3
      Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

      serkanhamarat@g mail.com wrote:
      Try this:
      >
      $HTTP_SESSION_V ARS = &$_SESSION;
      >
      Thanks for the suggestion, but as I don't know the intended purpose of
      this statement, I don't really want to mess about with it without
      understanding a bit more.

      I was hoping someone would be able to tell me why a coder (who
      presumably knows what they're doing) would write such a statement in the
      first place...

      Regards,
      Mike

      Comment

      • Pedro Graca

        #4
        Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

        Michael Windsor wrote:
        For reasons I don't know, if the PHP version is 5 or greater,
        register_long_a rrays is false and $_SESSION exists, the following
        statement is executed:
        >
        $HTTP_SESSION_V ARS = $_SESSION;
        Probably the script was written for PHP version < (something) when the
        superglobal arrays were not defined.
        Instead of changing the script to use the "new" superglobal arrays, the
        programmer chose to copy the $_SESSION array to the $HTTP_SESSION_V ARS
        and keep everything else referencing $HTTP_SESSION_V ARS['index'].
        This line is stopping any subsequent changes to the $_SESSION variable
        from being stored in the session file on the server - changes can be
        made, but are all lost at the end of the page processing and the value
        reverts to whatever it was before the script was executed.
        Check the very end of the script for a line

        $_SESSION = $HTTP_SESSION_V ARS;


        --
        I (almost) never check the dodgeit address.
        If you *really* need to mail me, use the address in the Reply-To
        header with a message in *plain* *text* *without* *attachments*.

        Comment

        • Michael Windsor

          #5
          Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

          Pedro Graca wrote:
          Michael Windsor wrote:
          >For reasons I don't know, if the PHP version is 5 or greater,
          >register_long_ arrays is false and $_SESSION exists, the following
          >statement is executed:
          >>
          >$HTTP_SESSION_ VARS = $_SESSION;
          >
          Probably the script was written for PHP version < (something) when the
          superglobal arrays were not defined.
          Instead of changing the script to use the "new" superglobal arrays, the
          programmer chose to copy the $_SESSION array to the $HTTP_SESSION_V ARS
          and keep everything else referencing $HTTP_SESSION_V ARS['index'].
          >
          >This line is stopping any subsequent changes to the $_SESSION variable
          >from being stored in the session file on the server - changes can be
          >made, but are all lost at the end of the page processing and the value
          >reverts to whatever it was before the script was executed.
          >
          Check the very end of the script for a line
          >
          $_SESSION = $HTTP_SESSION_V ARS;
          >
          >
          Thanks for your help.

          What you say makes sense and made me realise what the code was for - I'm
          afraid I hadn't quite clicked what the test for "register_long_ arrays"
          was doing: somehow I saw "register_long_ arrays" and read
          "register_globa ls" and therefore hadn't realised that $HTTP_SESSION_V ARS
          isn't pre-populated on my system (by virtue of using the newer,
          recommended php.ini in the distribution, as it turns out).

          I can't find a corresponding assignment *to* the $_SESSION array in the
          same file or that I can trace in any of the other included files. On the
          surface, if this were happening, it would appear to perfectly explain my
          problem - I write to $_SESSION and it gets overwritten by the contents
          of $HTTP_SESSION_V ARS at the end of the script.

          But this can't be the whole story: I've written code after the last
          include that shows the same probem and, in fact, if I remove all the
          phpbb code and *just* put "$HTTP_SESSION_ VARS = $_SESSION" after
          session_start() , it stops $_SESSION behaving properly in exactly the
          same way. It doesn't have to be $HTTP_SESSION_V ARS, incidentally,
          assigning the value of $_SESSION to any other variable has the same effect.

          Could this be a bug in PHP?

          Thanks again,
          Mike

          Comment

          • Pedro Graca

            #6
            Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

            Michael Windsor wrote:
            if I [...] put "$HTTP_SESSION_ VARS = $_SESSION" after
            session_start() , it stops $_SESSION behaving properly [...]
            >
            Could this be a bug in PHP?
            My PHP does not exhibit that behaviour.
            Can it be that you have /something else/ in your code responsible for
            the behaviour you describe?


            <?php
            session_start() ;

            if (rand(0, 1)) {

            echo "Using copy of the \$_SESSION array...<br>\n" ;

            $COPY_SESSION = $_SESSION;
            if (!isset($COPY_S ESSION['count'])) {
            $COPY_SESSION['count'] = 0;
            }
            $val = ++$COPY_SESSION['count'];
            if (rand(0, 1)) {
            echo "and not copying it back.<br>\n";
            } else {
            $_SESSION = $COPY_SESSION;
            }

            } else {

            if (!isset($_SESSI ON['count'])) {
            $_SESSION['count'] = 0;
            }
            $val = ++$_SESSION['count'];

            }

            echo "Current value is $val.<br>\n";
            ?>

            --
            I (almost) never check the dodgeit address.
            If you *really* need to mail me, use the address in the Reply-To
            header with a message in *plain* *text* *without* *attachments*.

            Comment

            • Michael Windsor

              #7
              Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

              Pedro Graca wrote:
              Michael Windsor wrote:
              >if I [...] put "$HTTP_SESSION_ VARS = $_SESSION" after
              >session_start( ), it stops $_SESSION behaving properly [...]
              >>
              >Could this be a bug in PHP?
              >
              My PHP does not exhibit that behaviour.
              Can it be that you have /something else/ in your code responsible for
              the behaviour you describe?
              >
              [snip code]

              Your code on my web server exhibits the behaviour I would expect, but it
              doesn't quite test the problem I'm having. If your code is amended as
              follows:

              <?php
              session_start() ;

              if (rand(0, 1)) {

              echo "Using copy of the \$_SESSION array...<br>\n" ;

              $COPY_SESSION = $_SESSION;
              if (rand(0, 1)) {
              echo "and not copying it back.<br>\n";
              } else {
              $_SESSION = $COPY_SESSION;
              }
              if (!isset($_SESSI ON['count'])) {
              $_SESSION['count'] = 0;
              }
              $val = ++$_SESSION['count'];

              } else {

              if (!isset($_SESSI ON['count'])) {
              $_SESSION['count'] = 0;
              }
              $val = ++$_SESSION['count'];

              }

              echo "Current value is $val.<br>\n";
              ?>

              counter increments are only shown on pages following a page where a copy
              is NOT taken of $_SESSION (i.e. the final else clause is executed),
              regardless of whether the copy of $_SESSION is written back to it or
              not. Note that all increments in this version of the code are made
              directly to the $_SESSION array, never to a copy: the counter *should*
              increment on every page load, as far as I can see. It doesn't on my system.

              Comment

              • Pedro Graca

                #8
                Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

                Michael Windsor wrote:
                <?php
                session_start() ;
                >
                if (rand(0, 1)) {
                >
                echo "Using copy of the \$_SESSION array...<br>\n" ;
                >
                $COPY_SESSION = $_SESSION;
                if (rand(0, 1)) {
                echo "and not copying it back.<br>\n";
                } else {
                $_SESSION = $COPY_SESSION;
                }
                if (!isset($_SESSI ON['count'])) {
                $_SESSION['count'] = 0;
                }
                $val = ++$_SESSION['count'];
                >
                } else {
                >
                if (!isset($_SESSI ON['count'])) {
                $_SESSION['count'] = 0;
                }
                $val = ++$_SESSION['count'];
                >
                }
                >
                echo "Current value is $val.<br>\n";
                ?>
                >
                counter increments are only shown on pages following a page where a copy
                is NOT taken of $_SESSION (i.e. the final else clause is executed),
                regardless of whether the copy of $_SESSION is written back to it or
                not. Note that all increments in this version of the code are made
                directly to the $_SESSION array, never to a copy: the counter *should*
                increment on every page load, as far as I can see. It doesn't on my system.
                This amended script *always* increments the current value for me.
                Can you post the result of phpinfo()?

                Comment

                • Michael Windsor

                  #9
                  Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

                  Pedro Graca wrote:
                  Michael Windsor wrote:
                  ....[snip]...
                  >
                  This amended script *always* increments the current value for me.
                  Can you post the result of phpinfo()?
                  Sure.

                  If you'd like a more formatted version, I'll gladly email you the
                  generated html.

                  As far as I can recall, I haven't changed anything other than paths from
                  the default installation settings, excepting that I used the "new
                  improved" php.ini in the distribution and not the older (but, if I
                  recall, more compatible php.ini-dist). This installation is a proper
                  install from the standard distribution.

                  Although I haven't tested this particular script with it, I have been
                  seeing similar results on an XP laptop running PHP 5.1.6 installed as
                  part of the WAMP (http://www.wampserver.com/en/) distribution. Let me
                  know if the phpinfo() data from there would also be useful.

                  Thanks,
                  Mike



                  PHP Logo
                  PHP Version 5.1.3

                  System Windows NT AGORA 5.2 build 3790
                  Build Date May 1 2006 00:27:04
                  Configure Command cscript /nologo configure.js
                  "--enable-snapshot-build" "--with-gd=shared"
                  Server API ISAPI
                  Virtual Directory Support enabled
                  Configuration File (php.ini) Path C:\UnixPrograms \PHP\php.ini
                  PHP API 20041225
                  PHP Extension 20050922
                  Zend Extension 220051025
                  Debug Build no
                  Thread Safety enabled
                  Zend Memory Manager enabled
                  IPv6 Support enabled
                  Registered PHP Streams php, file, http, ftp, compress.zlib
                  Registered Stream Socket Transports tcp, udp
                  Registered Stream Filters convert.iconv.* , string.rot13,
                  string.toupper, string.tolower, string.strip_ta gs, convert.*, consumed,
                  zlib.*

                  Zend logo This program makes use of the Zend Scripting Language Engine:
                  Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

                  PHP Credits
                  Configuration
                  PHP Core
                  Directive Local Value Master Value
                  allow_call_time _pass_reference Off Off
                  allow_url_fopen On On
                  always_populate _raw_post_data Off Off
                  arg_separator.i nput & &
                  arg_separator.o utput & &
                  asp_tags Off Off
                  auto_append_fil e no value no value
                  auto_globals_ji t On On
                  auto_prepend_fi le no value no value
                  browscap C:\WINDOWS\syst em32\inetsrv\br owscap.ini
                  C:\WINDOWS\syst em32\inetsrv\br owscap.ini
                  default_charset no value no value
                  default_mimetyp e text/html text/html
                  define_syslog_v ariables Off Off
                  disable_classes no value no value
                  disable_functio ns no value no value
                  display_errors On On
                  display_startup _errors On On
                  doc_root c:\inetpub\wwwr oot c:\inetpub\wwwr oot
                  docref_ext no value no value
                  docref_root no value no value
                  enable_dl On On
                  error_append_st ring no value no value
                  error_log no value no value
                  error_prepend_s tring no value no value
                  error_reporting 2047 2047
                  expose_php On On
                  extension_dir C:\UnixPrograms \PHP\ext C:\UnixPrograms \PHP\ext
                  file_uploads On On
                  highlight.bg #FFFFFF #FFFFFF
                  highlight.comme nt #FF8000 #FF8000
                  highlight.defau lt #0000BB #0000BB
                  highlight.html #000000 #000000
                  highlight.keywo rd #007700 #007700
                  highlight.strin g #DD0000 #DD0000
                  html_errors On On
                  ignore_repeated _errors Off Off
                  ignore_repeated _source Off Off
                  ignore_user_abo rt Off Off
                  implicit_flush Off Off
                  include_path .;C:\Inetpub\ww wroot\qcodo\inc ludes
                  ..;C:\Inetpub\w wwroot\qcodo\in cludes
                  log_errors On On
                  log_errors_max_ len 1024 1024
                  magic_quotes_gp c Off Off
                  magic_quotes_ru ntime Off Off
                  magic_quotes_sy base Off Off
                  mail.force_extr a_parameters no value no value
                  max_execution_t ime 30 30
                  max_input_time 60 60
                  open_basedir no value no value
                  output_bufferin g 4096 4096
                  output_handler no value no value
                  post_max_size 8M 8M
                  precision 14 14
                  realpath_cache_ size 16K 16K
                  realpath_cache_ ttl 120 120
                  register_argc_a rgv Off Off
                  register_global s Off Off
                  register_long_a rrays Off Off
                  report_memleaks On On
                  report_zend_deb ug On On
                  safe_mode Off Off
                  safe_mode_exec_ dir no value no value
                  safe_mode_gid Off Off
                  safe_mode_inclu de_dir no value no value
                  sendmail_from no value no value
                  sendmail_path no value no value
                  serialize_preci sion 100 100
                  short_open_tag Off Off
                  SMTP smtp.ntlworld.c om smtp.ntlworld.c om
                  smtp_port 25 25
                  sql.safe_mode Off Off
                  track_errors Off Off
                  unserialize_cal lback_func no value no value
                  upload_max_file size 2M 2M
                  upload_tmp_dir no value no value
                  user_dir no value no value
                  variables_order GPCS GPCS
                  xmlrpc_error_nu mber 0 0
                  xmlrpc_errors Off Off
                  y2k_compliance On On
                  zend.ze1_compat ibility_mode Off Off

                  bcmath
                  BCMath support enabled

                  calendar
                  Calendar support enabled

                  com_dotnet
                  COM support enabled
                  DCOM support disabled
                  ..Net support enabled

                  Directive Local Value Master Value
                  com.allow_dcom 0 0
                  com.autoregiste r_casesensitive 1 1
                  com.autoregiste r_typelib 0 0
                  com.autoregiste r_verbose 0 0
                  com.code_page no value no value
                  com.typelib_fil e no value no value

                  ctype
                  ctype functions enabled

                  curl
                  CURL support enabled
                  CURL Information libcurl/7.14.0 OpenSSL/0.9.8a zlib/1.2.3

                  date
                  date/time support enabled
                  Timezone Database Version 2006.1
                  Timezone Database internal
                  Default timezone Europe/London

                  Directive Local Value Master Value
                  date.default_la titude 31.7667 31.7667
                  date.default_lo ngitude 35.2333 35.2333
                  date.sunrise_ze nith 90.583333 90.583333
                  date.sunset_zen ith 90.583333 90.583333
                  date.timezone no value no value

                  dom
                  DOM/XML enabled
                  DOM/XML API Version 20031129
                  libxml Version 2.6.22
                  HTML Support enabled
                  XPath Support enabled
                  XPointer Support enabled
                  Schema Support enabled
                  RelaxNG Support enabled

                  ftp
                  FTP support enabled

                  hash
                  hash support enabled
                  Hashing Engines md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160
                  whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4
                  tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3
                  haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4
                  haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

                  iconv
                  iconv support enabled
                  iconv implementation "libiconv"
                  iconv library version 1.9

                  Directive Local Value Master Value
                  iconv.input_enc oding ISO-8859-1 ISO-8859-1
                  iconv.internal_ encoding ISO-8859-1 ISO-8859-1
                  iconv.output_en coding ISO-8859-1 ISO-8859-1

                  ISAPI
                  Server Variable Value
                  CONTENT_LENGTH 0
                  PATH_TRANSLATED c:\inetpub\wwwr oot\PHPTest\inf o.php
                  REMOTE_ADDR 192.168.40.11
                  REMOTE_HOST 192.168.40.11
                  REQUEST_METHOD GET
                  SERVER_NAME agora
                  SERVER_PORT 80
                  SERVER_PROTOCOL HTTP/1.1
                  SERVER_SOFTWARE Microsoft-IIS/6.0
                  APPL_MD_PATH /LM/W3SVC/1/ROOT
                  APPL_PHYSICAL_P ATH c:\inetpub\wwwr oot\
                  INSTANCE_ID 1
                  INSTANCE_META_P ATH /LM/W3SVC/1
                  URL /PHPTest/info.php
                  ALL_HTTP HTTP_CONNECTION :keep-alive HTTP_KEEP_ALIVE :300
                  HTTP_ACCEPT:tex t/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,ima ge/png,*/*;q=0.5
                  HTTP_ACCEPT_CHA RSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7
                  HTTP_ACCEPT_ENC ODING:gzip,defl ate HTTP_ACCEPT_LAN GUAGE:en-gb,en;q=0.5
                  HTTP_COOKIE:php bb2mysql_data=a %3A2%3A%7Bs%3A1 1%3A%22autologi nid%22%3Bs%3A0% 3A%22%22%3Bs%3A 6%3A%22userid%2 2%3Bs%3A1%3A%22 2%22%3B%7D;
                  Fishbone-Style=Standard; SlimServer-player=8c%3A79% 3Aa8%3A57%3Ac8% 3A12;
                  findafoodieforu m_data=a%3A2%3A %7Bs%3A11%3A%22 autologinid%22% 3Bs%3A0%3A%22%2 2%3Bs%3A6%3A%22 userid%22%3Bs%3 A1%3A%222%22%3B %7D
                  HTTP_HOST:agora HTTP_USER_AGENT :Mozilla/5.0 (Windows; U; Windows NT 5.1;
                  en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0
                  HTTPS off
                  SCRIPT_NAME /PHPTest/info.php
                  SERVER_PORT_SEC URE 0

                  libxml
                  libXML support active
                  libXML Version 2.6.22
                  libXML streams enabled

                  mysql
                  MySQL Support enabled
                  Active Persistent Links 0
                  Active Links 0
                  Client API version 5.0.21

                  Directive Local Value Master Value
                  mysql.allow_per sistent On On
                  mysql.connect_t imeout 60 60
                  mysql.default_h ost no value no value
                  mysql.default_p assword no value no value
                  mysql.default_p ort no value no value
                  mysql.default_s ocket no value no value
                  mysql.default_u ser no value no value
                  mysql.max_links Unlimited Unlimited
                  mysql.max_persi stent Unlimited Unlimited
                  mysql.trace_mod e Off Off

                  mysqli
                  MysqlI Support enabled
                  Client API version 5.0.21
                  MYSQLI_SOCKET /tmp/mysql.sock

                  Directive Local Value Master Value
                  mysqli.default_ host no value no value
                  mysqli.default_ port 3306 3306
                  mysqli.default_ pw no value no value
                  mysqli.default_ socket no value no value
                  mysqli.default_ user no value no value
                  mysqli.max_link s Unlimited Unlimited
                  mysqli.reconnec t Off Off

                  odbc
                  ODBC Support enabled
                  Active Persistent Links 0
                  Active Links 0
                  ODBC library Win32

                  Directive Local Value Master Value
                  odbc.allow_pers istent On On
                  odbc.check_pers istent On On
                  odbc.default_db no value no value
                  odbc.default_pw no value no value
                  odbc.default_us er no value no value
                  odbc.defaultbin mode return as is return as is
                  odbc.defaultlrl return up to 4096 bytes return up to 4096 bytes
                  odbc.max_links Unlimited Unlimited
                  odbc.max_persis tent Unlimited Unlimited

                  pcre
                  PCRE (Perl Compatible Regular Expressions) Support enabled
                  PCRE Library Version 6.6 06-Feb-2006

                  Reflection
                  Reflection enabled
                  Version $Id: php_reflection. c,v 1.164.2.33 2006/03/29 14:28:42 tony2001
                  Exp $

                  session
                  Session Support enabled
                  Registered save handlers files user
                  Registered serializer handlers php php_binary wddx

                  Directive Local Value Master Value
                  session.auto_st art Off Off
                  session.bug_com pat_42 Off Off
                  session.bug_com pat_warn On On
                  session.cache_e xpire 180 180
                  session.cache_l imiter nocache nocache
                  session.cookie_ domain no value no value
                  session.cookie_ lifetime 0 0
                  session.cookie_ path / /
                  session.cookie_ secure Off Off
                  session.entropy _file no value no value
                  session.entropy _length 0 0
                  session.gc_divi sor 1000 1000
                  session.gc_maxl ifetime 1440 1440
                  session.gc_prob ability 1 1
                  session.hash_bi ts_per_characte r 5 5
                  session.hash_fu nction 0 0
                  session.name PHPSESSID PHPSESSID
                  session.referer _check no value no value
                  session.save_ha ndler files files
                  session.save_pa th no value no value
                  session.seriali ze_handler php php
                  session.use_coo kies On On
                  session.use_onl y_cookies Off Off
                  session.use_tra ns_sid 0 0

                  SimpleXML
                  Simplexml support enabled
                  Revision $Revision: 1.151.2.22 $
                  Schema support enabled

                  SPL
                  SPL support enabled
                  Interfaces Countable, OuterIterator, RecursiveIterat or,
                  SeekableIterato r, SplObserver, SplSubject
                  Classes AppendIterator, ArrayIterator, ArrayObject,
                  BadFunctionCall Exception, BadMethodCallEx ception, CachingIterator ,
                  DirectoryIterat or, DomainException , EmptyIterator, FilterIterator,
                  InfiniteIterato r, InvalidArgument Exception, IteratorIterato r,
                  LengthException , LimitIterator, LogicException, NoRewindIterato r,
                  OutOfBoundsExce ption, OutOfRangeExcep tion, OverflowExcepti on,
                  ParentIterator, RangeException, RecursiveArrayI terator,
                  RecursiveCachin gIterator, RecursiveDirect oryIterator,
                  RecursiveFilter Iterator, RecursiveIterat orIterator, RuntimeExceptio n,
                  SimpleXMLIterat or, SplFileInfo, SplFileObject, SplObjectStorag e,
                  SplTempFileObje ct, UnderflowExcept ion, UnexpectedValue Exception

                  standard
                  Regex Library Bundled library enabled
                  Dynamic Library Support enabled
                  Internal Sendmail Support for Windows enabled

                  Directive Local Value Master Value
                  assert.active 1 1
                  assert.bail 0 0
                  assert.callback no value no value
                  assert.quiet_ev al 0 0
                  assert.warning 1 1
                  auto_detect_lin e_endings 0 0
                  default_socket_ timeout 60 60
                  safe_mode_allow ed_env_vars PHP_ PHP_
                  safe_mode_prote cted_env_vars LD_LIBRARY_PATH LD_LIBRARY_PATH
                  url_rewriter.ta gs a=href,area=hre f,frame=src,inp ut=src,form=fak eentry
                  a=href,area=hre f,frame=src,inp ut=src,form=fak eentry
                  user_agent no value no value

                  tokenizer
                  Tokenizer Support enabled

                  wddx
                  WDDX Support enabled
                  WDDX Session Serializer enabled

                  xml
                  XML Support active
                  XML Namespace Support active
                  libxml2 Version 2.6.22

                  xmlreader
                  XMLReader enabled

                  xmlwriter
                  XMLWriter enabled

                  zlib
                  ZLib Support enabled
                  Stream Wrapper support compress.zlib://
                  Stream Filter support zlib.inflate, zlib.deflate
                  Compiled Version 1.2.3
                  Linked Version 1.2.3

                  Directive Local Value Master Value
                  zlib.output_com pression Off Off
                  zlib.output_com pression_level -1 -1
                  zlib.output_han dler no value no value

                  Additional Modules
                  Module Name

                  Environment
                  Variable Value
                  ALLUSERSPROFILE C:\Documents and Settings\All Users
                  ClusterLog C:\WINDOWS\Clus ter\cluster.log
                  CommonProgramFi les C:\Program Files\Common Files
                  COMPUTERNAME AGORA
                  ComSpec C:\WINDOWS\syst em32\cmd.exe
                  FP_NO_HOST_CHEC K NO
                  NUMBER_OF_PROCE SSORS 1
                  OS Windows_NT
                  Path C:\Perl\bin\;C: \Program Files\Windows Resource
                  Kits\Tools\;C:\ WINDOWS\system3 2;C:\WINDOWS;C: \WINDOWS\System 32\Wbem;C:\Prog ram
                  Files\Microsoft SQL Server\80\Tools \Binn\;C:\Progr am Files\Microsoft SQL
                  Server\90\DTS\B inn\;C:\Program Files\Microsoft SQL
                  Server\90\Tools \binn\;C:\Progr am Files\Microsoft SQL
                  Server\90\Tools \Binn\VSShell\C ommon7\IDE\;C:\ Program
                  Files\cwRsync\b in;C:\UnixProgr ams\Sendmail;C: \UnixPrograms\b in;C:\Program
                  Files\MySQL\MyS QL Server 5.0\bin;C:\Unix Programs\PHP
                  PATHEXT .COM;.EXE;.BAT; .CMD;.VBS;.VBE; .JS;.JSE;.WSF;. WSH
                  PROCESSOR_ARCHI TECTURE x86
                  PROCESSOR_IDENT IFIER x86 Family 6 Model 7 Stepping 3, GenuineIntel
                  PROCESSOR_LEVEL 6
                  PROCESSOR_REVIS ION 0703
                  ProgramFiles C:\Program Files
                  SystemDrive C:
                  SystemRoot C:\WINDOWS
                  TEMP C:\WINDOWS\TEMP
                  TMP C:\WINDOWS\TEMP
                  USERPROFILE C:\Documents and Settings\Defaul t User
                  windir C:\WINDOWS

                  PHP Variables
                  Variable Value
                  _REQUEST["phpbb2mysql_da ta"]
                  a:2:{s:11:"auto loginid";s:0:"" ;s:6:"userid";s :1:"2";}
                  _REQUEST["Fishbone-Style"] Standard
                  _REQUEST["SlimServer-player"] 8c:79:a8:57:c8: 12
                  _REQUEST["findafoodiefor um_data"]
                  a:2:{s:11:"auto loginid";s:0:"" ;s:6:"userid";s :1:"2";}
                  _COOKIE["phpbb2mysql_da ta"]
                  a:2:{s:11:"auto loginid";s:0:"" ;s:6:"userid";s :1:"2";}
                  _COOKIE["Fishbone-Style"] Standard
                  _COOKIE["SlimServer-player"] 8c:79:a8:57:c8: 12
                  _COOKIE["findafoodiefor um_data"]
                  a:2:{s:11:"auto loginid";s:0:"" ;s:6:"userid";s :1:"2";}
                  _SERVER["ALL_HTTP"] HTTP_CONNECTION :keep-alive HTTP_KEEP_ALIVE :300
                  HTTP_ACCEPT:tex t/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,ima ge/png,*/*;q=0.5
                  HTTP_ACCEPT_CHA RSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7
                  HTTP_ACCEPT_ENC ODING:gzip,defl ate HTTP_ACCEPT_LAN GUAGE:en-gb,en;q=0.5
                  HTTP_COOKIE:php bb2mysql_data=a %3A2%3A%7Bs%3A1 1%3A%22autologi nid%22%3Bs%3A0% 3A%22%22%3Bs%3A 6%3A%22userid%2 2%3Bs%3A1%3A%22 2%22%3B%7D;
                  Fishbone-Style=Standard; SlimServer-player=8c%3A79% 3Aa8%3A57%3Ac8% 3A12;
                  findafoodieforu m_data=a%3A2%3A %7Bs%3A11%3A%22 autologinid%22% 3Bs%3A0%3A%22%2 2%3Bs%3A6%3A%22 userid%22%3Bs%3 A1%3A%222%22%3B %7D
                  HTTP_HOST:agora HTTP_USER_AGENT :Mozilla/5.0 (Windows; U; Windows NT 5.1;
                  en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0
                  _SERVER["HTTPS"] off
                  _SERVER["SCRIPT_NAM E"] /PHPTest/info.php
                  _SERVER["HTTP_COOKI E"]
                  phpbb2mysql_dat a=a%3A2%3A%7Bs% 3A11%3A%22autol oginid%22%3Bs%3 A0%3A%22%22%3Bs %3A6%3A%22useri d%22%3Bs%3A1%3A %222%22%3B%7D;
                  Fishbone-Style=Standard; SlimServer-player=8c%3A79% 3Aa8%3A57%3Ac8% 3A12;
                  findafoodieforu m_data=a%3A2%3A %7Bs%3A11%3A%22 autologinid%22% 3Bs%3A0%3A%22%2 2%3Bs%3A6%3A%22 userid%22%3Bs%3 A1%3A%222%22%3B %7D
                  _SERVER["AUTH_PASSW ORD"] no value
                  _SERVER["AUTH_TYPE"] no value
                  _SERVER["AUTH_USER"] no value
                  _SERVER["CONTENT_LENGTH "] 0
                  _SERVER["CONTENT_TY PE"] no value
                  _SERVER["PATH_TRANSLATE D"] c:\inetpub\wwwr oot
                  _SERVER["QUERY_STRI NG"] no value
                  _SERVER["REMOTE_ADD R"] 192.168.40.11
                  _SERVER["REMOTE_HOS T"] 192.168.40.11
                  _SERVER["REMOTE_USE R"] no value
                  _SERVER["REQUEST_METHOD "] GET
                  _SERVER["SERVER_NAM E"] agora
                  _SERVER["SERVER_POR T"] 80
                  _SERVER["SERVER_PROTOCO L"] HTTP/1.1
                  _SERVER["SERVER_SOFTWAR E"] Microsoft-IIS/6.0
                  _SERVER["APPL_MD_PA TH"] /LM/W3SVC/1/ROOT
                  _SERVER["APPL_PHYSICAL_ PATH"] c:\inetpub\wwwr oot\
                  _SERVER["INSTANCE_I D"] 1
                  _SERVER["INSTANCE_META_ PATH"] /LM/W3SVC/1
                  _SERVER["LOGON_USER "] no value
                  _SERVER["REQUEST_UR I"] /PHPTest/info.php
                  _SERVER["URL"] /PHPTest/info.php
                  _SERVER["SCRIPT_FILENAM E"] c:\inetpub\wwwr oot/PHPTest/info.php
                  _SERVER["ORIG_PATH_INFO "] /PHPTest/info.php
                  _SERVER["PATH_INFO"] no value
                  _SERVER["ORIG_PATH_TRAN SLATED"] c:\inetpub\wwwr oot\PHPTest\inf o.php
                  _SERVER["DOCUMENT_R OOT"] c:\inetpub\wwwr oot
                  _SERVER["PHP_SELF"] /PHPTest/info.php
                  _SERVER["HTTP_CONNECTIO N"] keep-alive
                  _SERVER["HTTP_KEEP_ALIV E"] 300
                  _SERVER["HTTP_ACCEP T"]
                  text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,ima ge/png,*/*;q=0.5
                  _SERVER["HTTP_ACCEPT_CH ARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
                  _SERVER["HTTP_ACCEPT_EN CODING"] gzip,deflate
                  _SERVER["HTTP_ACCEPT_LA NGUAGE"] en-gb,en;q=0.5
                  _SERVER["HTTP_HOST"] agora
                  _SERVER["HTTP_USER_AGEN T"] Mozilla/5.0 (Windows; U; Windows NT 5.1;
                  en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0
                  _SERVER["REQUEST_TI ME"] 1162839245

                  Comment

                  • Pedro Graca

                    #10
                    Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

                    Michael Windsor wrote:
                    [...]
                    session
                    [...]
                    Directive Local Value Master Value
                    [...]
                    session.save_pa th no value no value
                    [...]

                    I believe `session.save_p ath` is your problem.
                    If there's no value for it, PHP will use "/tmp". Do you have a "C:\tmp"
                    directory on your disk?

                    Try changing php.ini and specify an existing directory for the
                    session.save_pa th entry, or create a "C:\tmp" directory.

                    Or do it within a test script first:

                    <?php
                    # session_save_pa th('C:/WINDOWS/TEMP');
                    session_save_pa th('C:\\WINDOWS \\TEMP');
                    session_start() ;

                    if (rand(0, 1)) {
                    echo "Using copy of the \$_SESSION array...<br>\n" ;
                    $COPY_SESSION = $_SESSION;
                    if (rand(0, 1)) {
                    echo "and not copying it back.<br>\n";
                    } else {
                    $_SESSION = $COPY_SESSION;
                    }
                    if (!isset($_SESSI ON['count'])) {
                    $_SESSION['count'] = 0;
                    }
                    $val = ++$_SESSION['count'];

                    } else {

                    if (!isset($_SESSI ON[çount'])) {
                    $_SESSION['count'] = 0;
                    }
                    $val = ++$_SESSION['count'];
                    }

                    echo "Current value is $val.<br>\n";
                    ?>

                    --
                    I (almost) never check the dodgeit address.
                    If you *really* need to mail me, use the address in the Reply-To
                    header with a message in *plain* *text* *without* *attachments*.

                    Comment

                    • Michael Windsor

                      #11
                      Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

                      Pedro Graca wrote:
                      Michael Windsor wrote:
                      [...]
                      >session
                      [...]
                      >Directive Local Value Master Value
                      [...]
                      >session.save_p ath no value no value
                      [...]
                      >
                      I believe `session.save_p ath` is your problem.
                      If there's no value for it, PHP will use "/tmp". Do you have a "C:\tmp"
                      directory on your disk?
                      >
                      Try changing php.ini and specify an existing directory for the
                      session.save_pa th entry, or create a "C:\tmp" directory.
                      >
                      Or do it within a test script first:
                      >
                      ....[snip]...
                      >
                      I looked at this previously - I was examining the session files to see
                      if I could determine the problem. Session information is being stored in
                      C:\WINDOWS\Temp already; presumably PHP is defaulting to the system temp
                      path in the absence of a defined value.

                      Anyway, I'm sorry to report that adding the session_save_pa th() call
                      doesn't make any difference to the running of the script: the value is
                      still only incremented when $_SESSION is not assigned to another variable.

                      Just to make sure, I changed php.ini to specify a session path, but
                      again, it didn't make any difference, with or without the
                      session_save_pa th() call.

                      Are you running PHP on Windows? I'm wondering if that's the deciding factor.

                      I really appreciate your help!

                      Thanks,
                      Mike

                      Comment

                      • Pedro Graca

                        #12
                        Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

                        Michael Windsor wrote:
                        Are you running PHP on Windows? I'm wondering if that's the deciding factor.
                        No, I'm on Linux, still with PHP 4.3.

                        I'm out of explanations for the behaviour you see.
                        Try switching on

                        zend.ze1_compat ibility_mode

                        PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.


                        I doubt it will have an effect, but it will not do any harm to try it.

                        --
                        I (almost) never check the dodgeit address.
                        If you *really* need to mail me, use the address in the Reply-To
                        header with a message in *plain* *text* *without* *attachments*.

                        Comment

                        • Michael Windsor

                          #13
                          Re: $_SESSION / $HTTP_SESSION_V ARS behaviour

                          Pedro Graca wrote:
                          Michael Windsor wrote:
                          >Are you running PHP on Windows? I'm wondering if that's the deciding factor.
                          >
                          No, I'm on Linux, still with PHP 4.3.
                          >
                          I'm out of explanations for the behaviour you see.
                          Try switching on
                          >
                          zend.ze1_compat ibility_mode
                          >
                          PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.

                          >
                          I doubt it will have an effect, but it will not do any harm to try it.
                          It would seem that this is a bug in PHP
                          (http://bugs.php.net/bug.php?id=38833). Not only that, but the
                          maintainers of PHP are unwilling to fix it
                          (http://bugs.php.net/bug.php?id=3792 6)!

                          IMO, this is not a "documentat ion bug", as some have tried to suggest,
                          but a flaw in the implementation of the superglobals, or at the very
                          least in $_SESSION. I have made a contribution to the tracker to reflect
                          my viewpoint.

                          Mike

                          Comment

                          Working...