我的环境是win2000+apache1.3+php4.2

解决方案 »

  1.   

    说实话我确实碰到了这种问题,我在session中保存了很多的权限控制字符串
    (最多时达到几千个字符),起初将session.cache_limiter设成nocache时老是
    会碰到页面失效的警告,客户一直抱怨,后来我就将session.cache_limiter设
    成private或public(两个都试过),可在我的测试系统上(测试系统是window平台,
    实际运行系统是Solaris9),却出现session数据丢失的情况,从而造成用户有的功能无法
    正常使用.对php不是很懂,还请各位帮帮忙,谢谢!!!以下时php.ini文件Session部份的配置:
    [Session]
    ; Handler used to store/retrieve data.
    session.save_handler = files; Argument passed to save_handler.  In the case of files, this is the path
    ; where data files are stored. Note: Windows users have to change this 
    ; variable in order to use PHP's session functions.
    ; session.save_path = /tmp
    ; session.save_path = C:\WINNT\tempsession.save_path = E:\PHPSession; Whether to use cookies.
    session.use_cookies = 1
    ; Name of the session (used as cookie name).
    session.name = PHPSESSID; Initialize session on request startup.
    session.auto_start = 1; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0; The path for which the cookie is valid.
     session.cookie_path = /
    ;session.cookie_path = C:\WINNT\temp; The domain for which the cookie is valid.
    session.cookie_domain =; Handler used to serialize data.  php is the standard serializer of PHP.
    session.serialize_handler = php; Percentual probability that the 'garbage collection' process is started
    ; on every session initialization.
    session.gc_probability = 1; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440; Check HTTP Referer to invalidate externally stored URLs containing ids.
    ; HTTP_REFERER has to contain this substring for the session to be
    ; considered as valid.
    session.referer_check =; How many bytes to read from the file.
    session.entropy_length = 0; Specified here to create the session id.
    session.entropy_file =;session.entropy_length = 16;session.entropy_file = /dev/urandom; Set to {nocache,private,public} to determine HTTP caching aspects.
    session.cache_limiter = nocache; Document expires after n minutes.
    session.cache_expire = 1; use transient sid support if enabled by compiling with --enable-trans-sid.
    session.use_trans_sid = 1url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
      

  2.   

    以前我配置过,必须把session的保存路径放在主页目录。
      

  3.   

    丢文件和数据?这个很奇怪啊?不会是session.gc_maxlifetime时间到期给你清的吧?能存的数据量多少也说不准,反正我从没遇到存不了丢失的情况。你好好看看程序吧
    顺便,session.cookie_path = /  会不会让根目录有点乱?嗬嗬或者你调试时候把cookie禁止了,会有莫名其妙事情出现
      

  4.   

    首先,这样做是不会丢文件和数据的。
    不要在php.ini中修改,而要在程序中设置。你或许并无修改php.ini的权限但要注意到如下事实:
    session_cache_limiter('private');
    后,session将延时一个一个周期session_cache_limiter('public');
    后,session可能不被修改通常可用session_cache_limiter("private,must-revalidate");设计好session_start();出现的地方,根本不需要改变session的默认设置
      

  5.   

    非常抱歉!!!最近一直没时间上CSDN。-->顺便,session.cookie_path = /  会不会让根目录有点乱?嗬嗬
    -->或者你调试时候把cookie禁止了,会有莫名其妙事情出现
    我觉得session和cookie不一样吧,session是在服务器上保存的,cookie
    是在客户端保存的,我在调试时也没把cookie禁止掉。-->设计好session_start();出现的地方,根本不需要改变session的默认设置
    我在每个页面中都是将session_start()放在第一行的,不然的话会报错,其实
    session中的内容我在程序中从未进行过修改操作,只是在用户登录时,从数据
    库中取出数据放到session中而已,以后都是从中取数据的。我在Solaris上没做
    过测试(系统在用不能重启(24*7的))。所以不清楚在solaris上是否有这种情况。不管如何明天一定结帖,让大家久等了。
      

  6.   

    好不容易争取了一个机会在solaris上试了一次,
    结果跟window上面的一样,还差点转不回去,php的session问题确实好多,不好用,看php版总有人
    问session的问题,另外我发现php的数组有时也会发现
    有一些怪怪的问题.
    /usr/local/lib/php.ini文件内容:
      

  7.   

    [Session]
    ; Handler used to store/retrieve data.
    session.save_handler = files; Argument passed to save_handler.  In the case of files, this is the path
    ; where data files are stored. Note: Windows users have to change this 
    ; variable in order to use PHP's session functions.
    ; As of PHP 4.0.1, you can define the path as:
    ;     session.save_path = "N;/path"
    ; where N is an integer.  Instead of storing all the session files in 
    ; /path, what this will do is use subdirectories N-levels deep, and 
    ; store the session data in those directories.  This is useful if you 
    ; or your OS have problems with lots of files in one directory, and is 
    ; a more efficient layout for servers that handle lots of sessions.
    ; NOTE 1: PHP will not create this directory structure automatically.
    ;         You can use the script in the ext/session dir for that purpose.
    ; NOTE 2: See the section on garbage collection below if you choose to
    ;         use subdirectories for session storage
    session.save_path = /tmp; Whether to use cookies.
    session.use_cookies = 1; This option enables administrators to make their users invulnerable to
    ; attacks which involve passing session ids in URLs; defaults to 0.
    ; session.use_only_cookies = 1; Name of the session (used as cookie name).
    session.name = PHPSESSID; Initialize session on request startup.
    session.auto_start = 0; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0; The path for which the cookie is valid.
    session.cookie_path = /; The domain for which the cookie is valid.
    session.cookie_domain =; Handler used to serialize data.  php is the standard serializer of PHP.
    session.serialize_handler = php; Define the probability that the 'garbage collection' process is started
    ; on every session initialization.
    ; The probability is calculated by using gc_probability/gc_divisor,
    ; e.g. 1/100 means there is a 1% chance that the GC process starts
    ; on each request.session.gc_probability = 1
    session.gc_divisor     = 100; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440; NOTE: If you are using the subdirectory option for storing session files
    ;       (see session.save_path above), then garbage collection does *not*
    ;       happen automatically.  You will need to do your own garbage 
    ;       collection through a shell script, cron entry, or some other method. 
    ;       For example, the following script would is the equivalent of
    ;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
    ;          cd /path/to/sessions; find -cmin +24 | xargs rm; PHP 4.2 and less have an undocumented feature/bug that allows you to
    ; to initialize a session variable in the global scope, albeit register_globals
    ; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
    ; You can disable the feature and the warning seperately. At this time,
    ; the warning is only displayed, if bug_compat_42 is enabled.session.bug_compat_42 = 1
    session.bug_compat_warn = 1; Check HTTP Referer to invalidate externally stored URLs containing ids.
    ; HTTP_REFERER has to contain this substring for the session to be
    ; considered as valid.
    session.referer_check =; How many bytes to read from the file.
    session.entropy_length = 0; Specified here to create the session id.
    session.entropy_file =;session.entropy_length = 16;session.entropy_file = /dev/urandom; Set to {nocache,private,public,} to determine HTTP caching aspects
    ; or leave this empty to avoid sending anti-caching headers.
    session.cache_limiter = nocache; Document expires after n minutes.
    session.cache_expire = 180; trans sid support is disabled by default.
    ; Use of trans sid may risk your users security. 
    ; Use this option with caution.
    ; - User may send URL contains active session ID
    ;   to other person via. email/irc/etc.
    ; - URL that contains active session ID may be stored
    ;   in publically accessible computer.
    ; - User may access your site with the same session ID
    ;   always using URL stored in browser's history or books.
    session.use_trans_sid = 0; The URL rewriter will look for URLs in a defined set of HTML tags.
    ; form/fieldset are special; if you include them here, the rewriter will
    ; add a hidden <input> field with the info which is otherwise appended
    ; to URLs.  If you want XHTML conformity, remove the form entry.
    ; Note that all valid entries require a "=", even if no value follows.
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="