묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
흐흑.. 세션에 관한 문제좀 도와주세요.. ㅜㅜ
2004.02.15 17:15
질문을 올렸었는데 아무런 답변을 못받아서 이렇게 애타는 마음으로 다시한번 올려봅니다.
///// test.html ///////////////
<HTML>
<HEAD>
</HEAD>
<BODY>
<form action='test.php' method=get>
<input type=text value=good name=id>
<input type=submit value=test>
</form>
</BODY>
</HTML>
////// test.php //////////////
<?
session_start();
$user=$id;
session_register("user");
echo $user;
?>
///////////// 에러내용 //////////////
Warning: session_start(): open(/tmpsess_e6c88d4e2baf4a0e95028f758fe21dc1, O_RDWR) failed: No such file or directory (2) in D:autodaejintmptest.php on line 2
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:autodaejintmptest.php:2) in D:autodaejintmptest.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:autodaejintmptest.php:2) in D:autodaejintmptest.php on line 2
okpcok
Warning: Unknown(): open(/tmpsess_e6c88d4e2baf4a0e95028f758fe21dc1, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
php 는 d:apmphp 에 있고 그 아래에 temp 폴더가 있고 퍼미션은 777 입니다.
home 디렉터리명이 auto 입니다.
그리고 session 을 테스트하기 위해 아래와 같이 폴더를 만들고 tmp 폴더 퍼미션은 777 로 주었습니다.
d:/auto/tmp/test.html
d:/auto/tmp/test.php 가 있습니다.
test.html 에서 test.php 로 action 을 주었습니다.
그리고 test.html?id=good 이라고 값이 넘어가고
echo $user;
하면 값이 good 로 나와야 할것 같은데 위에 적은것 같은 에러가 납니다.
그러면 답변주신님들 말씀대로 tmp 라는 폴더퍼미션을 777 로 주면 된다고 해서..
그렇게 해보았습니다.
그래도 같은 에러가 납니다.
또 php 설치 디렉터리에 만들어야 되나 싶어 tmp 를 만들고 해봐도 역시 같은 에러가 납니다.
위의 질문에 호경님의 답변입니다.
//세션을 저장하는 폴더의 경로가 잘못된거 같습니다..
//php.ini에서 세션 저장폴더를 확인하세요~
//확실치는 않은데 /tmp 로 지정된거 같네여... c:xxx 절대 경로로 해보세여~
그래서 아래처럼 php.ini 를 수정하고 해봤습니다.
역시 에러내용이 하나도 바뀐것 없이 같은 내용으로 에러가 납니다.
[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 = "d:/auto/tmp"
;/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 = "d:/auto/tmp"
;/ <== 원래 지정되어 있던 값
; 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 bookmarks.
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="
그렇다면 어느폴더의 퍼미션을 777 로 주어야 하는지
아니면 tmp 폴더를 php설치경로에 새로이 만들어 주어야 하는지..
또 아니면 php.ini 에 어느곳을 수정해주어야 하는지..
저 같은 초보에게는 답답하기만 합니다.
아시는님께서 이 무지함을 깨우쳐 주시기만을 바랄뿐입니다.
긴 질문 읽어주셔서 감사드립니다.
///// test.html ///////////////
<HTML>
<HEAD>
</HEAD>
<BODY>
<form action='test.php' method=get>
<input type=text value=good name=id>
<input type=submit value=test>
</form>
</BODY>
</HTML>
////// test.php //////////////
<?
session_start();
$user=$id;
session_register("user");
echo $user;
?>
///////////// 에러내용 //////////////
Warning: session_start(): open(/tmpsess_e6c88d4e2baf4a0e95028f758fe21dc1, O_RDWR) failed: No such file or directory (2) in D:autodaejintmptest.php on line 2
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:autodaejintmptest.php:2) in D:autodaejintmptest.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:autodaejintmptest.php:2) in D:autodaejintmptest.php on line 2
okpcok
Warning: Unknown(): open(/tmpsess_e6c88d4e2baf4a0e95028f758fe21dc1, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
php 는 d:apmphp 에 있고 그 아래에 temp 폴더가 있고 퍼미션은 777 입니다.
home 디렉터리명이 auto 입니다.
그리고 session 을 테스트하기 위해 아래와 같이 폴더를 만들고 tmp 폴더 퍼미션은 777 로 주었습니다.
d:/auto/tmp/test.html
d:/auto/tmp/test.php 가 있습니다.
test.html 에서 test.php 로 action 을 주었습니다.
그리고 test.html?id=good 이라고 값이 넘어가고
echo $user;
하면 값이 good 로 나와야 할것 같은데 위에 적은것 같은 에러가 납니다.
그러면 답변주신님들 말씀대로 tmp 라는 폴더퍼미션을 777 로 주면 된다고 해서..
그렇게 해보았습니다.
그래도 같은 에러가 납니다.
또 php 설치 디렉터리에 만들어야 되나 싶어 tmp 를 만들고 해봐도 역시 같은 에러가 납니다.
위의 질문에 호경님의 답변입니다.
//세션을 저장하는 폴더의 경로가 잘못된거 같습니다..
//php.ini에서 세션 저장폴더를 확인하세요~
//확실치는 않은데 /tmp 로 지정된거 같네여... c:xxx 절대 경로로 해보세여~
그래서 아래처럼 php.ini 를 수정하고 해봤습니다.
역시 에러내용이 하나도 바뀐것 없이 같은 내용으로 에러가 납니다.
[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 = "d:/auto/tmp"
;/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 = "d:/auto/tmp"
;/ <== 원래 지정되어 있던 값
; 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 bookmarks.
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="
그렇다면 어느폴더의 퍼미션을 777 로 주어야 하는지
아니면 tmp 폴더를 php설치경로에 새로이 만들어 주어야 하는지..
또 아니면 php.ini 에 어느곳을 수정해주어야 하는지..
저 같은 초보에게는 답답하기만 합니다.
아시는님께서 이 무지함을 깨우쳐 주시기만을 바랄뿐입니다.
긴 질문 읽어주셔서 감사드립니다.
댓글 2
-
김윤희
2004.02.15 18:16
-
호경
2004.02.15 17:37
윈도우폴더안에 있는 php.ini수정하셨겠죠?...
아파치 재시작은 하셨겠죠?...
정 안되시면 session_start() 위에
@session_save_path("session"); 이렇게 넣으시구... 현재 파일이 있는 폴더에 session이라는 폴더를 생성해주세요~
너무 너무 감사합니다.
아파치 재시작에서 문제가 있었습니다. (전 바브입니다)
php.ini 를 수정하고도 재시작을 안했으니..
호경님 정말 감사드립니다.