PHP 세션 : $ _SESSION이 비어 있으며 Mac에서 로컬로 실행됩니다.
여기에 비슷한 다른 질문이 있다는 것을 알고 있지만 그중 어느 것도 내 문제를 해결하지 못했습니다.
문제 : 데이터를 $ _SESSION으로 설정하고 있지만 다가오는 전화에서는 비어있는 것처럼 보입니다.
그것을 해결하기 위해 무엇을 했습니까?
- 최신 버전의 PHP를 실행해야합니다.
- 어떤 php.ini가 사용되는지 확인하십시오.
- $ _SESSION 설정 전후의 상태 기록
- 다른 질문 및 포럼에서 제안 된대로 다양한 변수 설정
아래에 제가 제공 할 수있는 모든 정보를 제공하며 누군가가 해결책을 제안 할 수 있기를 바랍니다!
Mac에 PHP를 설치했습니다. brew install php
이 명령을 사용하여 소프트웨어 개발을 위해 로컬에서 실행하고 있습니다.
php -S localhost:8099 -d display_errors=on -t .
[Tue Nov 17 23:12:55 2020] PHP 7.4.11 Development Server (http://localhost:8099) started
session_start();
스크립트 시작 부분에 전화 를 겁니다 . 값을 $ _SESSION으로 설정하고 있지만 다음 호출에서 테스트 할 때 항상 비어 있습니다.
$ses = json_encode($_SESSION); site_log("before: {$ses}");
session_regenerate_id();
$_SESSION["upath"] = 'XXXXXX'; $ses = json_encode($_SESSION); site_log("after: {$ses}");
결과는 항상 동일합니다 (첫 번째 호출에서는 볼 수 있지만 다음 호출에서는 볼 수 없음).
20201118_040124_484 before: []
20201118_040124_485 after: {"upath":"XXXXXX"}
나는 웹 포럼의 많은 아이디어를 따르려고 노력했습니다.
INI 파일이 무엇인지 확인하십시오.
php -i | grep 'Configuration File'
>Configuration File (php.ini) Path => /usr/local/etc/php/7.4
>Loaded Configuration File => /usr/local/etc/php/7.4/php.ini
다양한 INI 파일 변수를 설정했습니다.
session.save_path = "/Users/myuser/Prog/MyApp/sessions"
+
chmod 777 /Users/myuser/Prog/MyApp/sessions
+
session.use_cookies = 1
+
session.cookie_secure = 0
그러나 결과는 여전히 동일합니다. 제발 어떤 생각?
은 phpinfo ()를 호출 한 결과는 아래의 링크 점 : 링크
답변
그래서 마침내 해결책을 찾았습니다.
여기에 제공된 정보를 기반으로합니다. 세션 쿠키가 설정되지 않았습니다.
@deceze가 내 질문에 올바르게 주석을 달았 기 때문에 이러한 문제를 디버깅하는 첫 번째 단계는 다음과 같습니다.
- save_path 폴더에 세션 파일이 생성되었는지 확인하십시오 (제 경우 : yes).
- 브라우저의 개발 도구를 사용하여 사이트에 쿠키가 설정되어 있는지 확인합니다 (제 경우 : 아니요).
따라서 실제 문제는 쿠키가 설정되지 않은 이유입니다.
해결책:
- 별칭 127.0.0.1에 항목을 'dot com'이름으로 추가합니다. 이것이 내가 한 일입니다.
# Mac 용! 다른 플랫폼에 대한 링크 된 답변 참조 sudo vi / private / etc / hosts # 다음 줄을 추가합니다. 127.0.0.1 mylocal.com
- 이 도메인에 대한 로컬 PHP 서버를 활성화합니다 (사이트 루트 폴더에서) :
php -S mylocal.com:8099 -d display_errors = on -t.
- PHP 서버에서 사이트를로드합니다. 대괄호를 사용하고 있는데 파일-> 프로젝트 설정 메뉴를 열고 라이브 미리보기 기본 URL을 다음과 같이 설정해야합니다.
http://mylocal.com:8099/
- 위의 질문에서 이미 자세히 설명했듯이 INI 파일의 일부 변수도 설정해야 할 수 있습니다.
이 정보가 다른 사람들에게 도움이되기를 바랍니다!