2011-02-10 7 views
5

.htaccess에 php_value session.save_path를 설정해야합니다. 이 경로는 전체 경로가 필요하며 상대 경로는 작동하지 않는 것 같습니다..htaccess에서 php_value를 조건부로 만드시겠습니까?

내 웹 응용 프로그램은 Windows 및 Linux 서버에서 실행되며 배포 목적으로 두 시스템에서 .htaccess 파일을 동일하게 유지하려고합니다.

php_value로의 때 session.save_path "<퍼센트의 SYSTEMPATH>/세션"

와 <% :

은 htaccess로 파일 자체, 이런 일에, htaccess로이 디렉토리를 참조하는 것이 가능 systempath>가 각 시스템에 자동으로 입력됩니까?

+0

흥미로운 질문입니다. 환경 변수를 사용하는 것이 가능할 수도 있습니다 - 잘 모르겠 음 –

+0

참조 : http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv –

답변

1

Apache 지시어로는 가능하지 않습니다.

하지만 당신은 PHP로 그렇게 할 수 있습니다

다음 __FILE__
ini_set('session.save_path', dirname(__FILE__).'/sessions'); 

현재 PHP 스크립트 파일에 파일 시스템 경로를 보유하고 dirname 해당 파일의 상위 디렉토리를 반환 magic constant입니다.

+0

고맙지 만 나는 .htaccess에서 그렇게하는 편이 낫습니다. 세션을 사용하는 여러 스크립트가 있기 때문입니다. .htaccess를 사용하면이 경로를 한 곳에서 설정하면됩니다. – Dylan

+0

+1 @Dylan : Apache는 .htaccess에서 변수 사용을 지원하지 않습니다. 'mod_env'는 (오직) 환경 변수를 설정할 수있게하고,'mod_rewrite'는 다시 쓰기 규칙과 조건에서 사용할 수있게 해줍니다. – netcoder

1

일부 환경 변수를 사용할 수 있습니다.

그것은 당신이 자동으로

# .htaccess 
php_value auto_prepend_file "autoprepend.php" 

그런 위해서는 ini_set()와 PHP를 구성하는 PHP 파일 붙일 수

%{ENV:variable} 
+0

안타깝게도'mod_rewrite'에서만 동작합니다. – netcoder

2

으로 추적 할 수없는 가망 또는하지 않을 경우 당신은 확인할 수 있습니다

// autoprepend.php 
ini_set('session.save_path', __DIR__ . '/sessions'); 

이렇게하면 디렉토리 내의 모든 PHP 스크립트에서 작동합니다.

0

아파치 .htaccess 예를 들어 php_value는 PHP 파일 만 적용합니다.

SetEnvIf Request_URI ".php$" IS_PHP 
<If "-T env('IS_PHP')"> 
    php_value auto_prepend_file "./init.php" 
</If> 
관련 문제