PHP: FAQ - Manual
[/] downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net s earch for in the function list all php.net sites this mirror only online documentation bug database Site News Archive All Changelogs just pear.php.net just pecl.php.net just talks.php.net general mailing list developer mailing list documentation mailing list PHP Manual Copyright Preface Getting Started Installation and Configuration Language Reference Security Features Function Reference PHP at the Core: A Hacker's Guide to the Zend Engine FAQ Appendices General Information The future: PHP 6 and Zend Engine 3 Last updated: Sun, 25 Nov 2007 view this page in Brazilian Portuguese Chinese (Simplified) Chinese (Hong Kong Cantonese) Chinese (Traditional) Czech Danish Dutch Finnish French German Greek Hebrew Hungarian Italian Japanese Korean Polish Romanian Russian Slovak Spanish Swedish FAQ: Frequently Asked Questions Table of Contents General Information Mailing lists Obtaining PHP Database issues Installation Build Problems Using PHP PHP and HTML PHP and COM PHP and other languages Migrating from PHP 2 to PHP 3 Migrating from PHP 3 to PHP 4 Migrating from PHP 4 to PHP 5 Miscellaneous Questions General Information The future: PHP 6 and Zend Engine 3 Last updated: Sun, 25 Nov 2007 add a note User Contributed Notes FAQ vlad-45 at voliacable dot com 15-Jan-2008 12:42 I spend too much time with session_set_save_handler() but could not use it. I work with Apache/1.3.12 (Win32) PHP/5.1.2 in local mode, if it matters. I want to use handler destroy() but it does not work. If I need to determine all handlers, then I have a problem with write(). Function write() does not want to create and open storage file. If file created outside the function, it still would not be opened. Actually, write() refuses to create any file. But debug output shows that write() was called and had all the necessary data. This problem can be solved by removing of function write(). Session will create storage file and write data in it. But function destroy() refuses to work in any case. (It's the only function I need.) After closing of browser the storage file remains and file temp (debug output) is absent. Maybe closing of browser does not mean end of session (although next time the session id will be different), but let's see how function write() works: " ; ////debug return( true ); } function close () { return( true ); } function read ( $id ) { global $sess_save_path ; $sess_file = "$sess_save_path/sess_$id" ; return (string) @ file_get_contents ( $sess_file ); } function write ( $id , $sess_data ) { echo "write begin
" ; //////debug global $sess_save_path ; $sess_file = "$sess_save_path/sess_$id" ; echo "$sess_file
" ; ////debug echo "$sess_data
" ; /////debug if ( $fp = @ fopen ( $sess_file , "w" )) { $return = fwrite ( $fp , $sess_data ); fclose ( $fp ); return $return ; } else { echo "did not open file for writing
" ; //////debug return( false ); } } function destroy ( $id ) // works in no case { global $sess_save_path ; $f = @ fopen ( "./tmp/temp" , "w" ); /////debug $sess_file = "$sess_save_path/sess_$id" ; return(@ unlink ( $sess_file )); } function gc ( $maxlifetime ) { global $sess_save_path ; foreach ( glob ( "$sess_save_path/sess_*" ) as $filename ) { if ( filemtime ( $filename ) + $maxlifetime < time ()) { @ unlink ( $filename ); } } return true ; } session_set_save_handler ( "open" , "close" , "read" , "write" , "destroy" , "gc" ); session_save_path ( "./tmp" ); // temporary storage session_name ( "counter" ); session_start (); //$id = session_id(); //If I use these 3 strings, file will be created, //$sess_file = "$sess_save_path/sess_$id"; // but would not be opened by write() all the same. //$fp = @fopen($sess_file, "w"); // file will be empty if (!( session_is_registered ( "someVar" ))) // new session { echo "someVar not registered
" ; ////debug session_register ( "someVar" ); // session variable $_SESSION [ "someVar" ] = "someValue" ; } echo "it still works
" ; ////debug ?> File temp was not created. A storage file was not created and output in browser was as follows: counter successfully opened someVar not registered it still works write begin ./tmp/sess_a4bc6c82ab15635de77bd0c9c74b13d4 someVar|s:9:"someValue"; did not open file for writing Who could explain this phenomenom? langjairich at yahoo dot com 17-Dec-2006 11:41 Here's how I successfully installed PHP 5.2 with my IIS 5.1: 1) Install with the option: "IIS 4+ / ISAPI" 2) Install under folder "C:\PHP\" 3) Edit the file: "C:\WINDOWS\php.ini" Change "doc_root = " to "doc_root = c:\inetpub\" 4) Open IIS, right click on home page, properties. Click "home directory" tab. Click Configuration, look for the extension ".php". The executable path should be "C:\PHP\php5isapi.dll" 5) Restart IIS. Enjoy. I had to learn the hard way. Took me 2 days. adriaan at vannatijne dot nl 29-Jul-2005 06:48 A dutch FAQ; www.yapf.net A dutch site about PHP; www.phpfreakz.nl dennis1989 at web dot de 28-Sep-2004 05:56 A German FAQ: http://www.php-faq.de philip at cornado dot com 31-Dec-2002 01:07 A lot of faqts here: http://php.faqts.com/ add a note General Information The future: PHP 6 and Zend Engine 3 Last updated: Sun, 25 Nov 2007 show source | credits | sitemap | contact | advertising | mirror sites Copyright © 2001-2008 The PHP Group All rights reserved. This mirror generously provided by: Max Khaikin Last updated: Fri Feb 1 04:17:04 2008 EET