2009-12-13 3 views
2

일반적인 구성을 유지하려는 2 대의 Mac이 있습니다. 아파치와 PHP의 경우, 보관 용 파일 (httpd.conf와 php.ini)을 보관 상자 (~/Dropbox/config)에 저장하고 symlink를 사용하여 공유 위치를 예상 위치에서 참조합니다.include_path를 공유 php.ini 파일에 설정

마찬가지로, 같은 방식으로 몇 가지 코드베이스를 공유합니다. 실제 파일은 ~/Dropbox/Development에 있으며 ~/Development/에 링크되어 있습니다. 이제는 유틸리티 클래스 라이브러리를 공유해야하며이를 수행하는 방법을 알 수 없습니다. 문제는 재생중인 모든 디렉토리가 홈 디렉토리에 있고 사용자 이름이 각 시스템마다 다르다는 것입니다. 하나는 ~/rwilkerson이고 다른 하나는 ~/rob입니다.

내 php.ini에서 어떻게 해결할 수 있습니까? 내 httpd.conf에서 환경 변수를 사용하여 그렇게했습니다. 예를 들어 가상 호스트 설정 파일에서 웹 루트를 /Users/${SUDO_USER}/path/to/webroot으로 설정할 수 있습니다. sudo를 사용하여 아파치 (sudo apachectl restart)를 다시 시작했기 때문에, 환경 변수는 현재 사용중인 머신의 적절한 사용자 이름으로 평가됩니다.

내가 알 수있는 한, 비슷한 방법으로 php.ini에서 변수를 사용할 수 없습니다. 나는 단순히 내 include_path에 두 경로를 모두 포함한다면 PHP는 주어진 컴퓨터에 존재하지 않는 경로를 무시할 뿐이라고 생각하지는 않습니다. 내 공유 라이브러리는 올바른 경로가 앞에 표시되고 앞에 잘못된 경로가있는 경우에만 포함됩니다.

include_path 지시어가 어떻게 작동하는지 뉘앙스가있는 리소스를 찾을 수 없으므로이 명백한 제한을 피할 방법이 없습니다. 누구든지 아이디어가 있습니까?

답 : 나는 아래 StasM의 솔루션 # 1을 사용하여 종료

. 그 오버라이드에게 php.ini의 값을하는

php_value include_path "/opt/local/lib/php:${HOME}/Dropbox/Development/lib/php/classes" 

을 아름답게했다 : 내 httpd.conf 파일에서 (또한 공유), I 덧붙였다.

답변

1

include_path은 존재하지 않는 디렉토리를 무시해야합니다. 하지만 그 외에, 당신이 중 하나를 수행 할 수 : 설정을 httpd.conf를 사용

  1. 당신의 include_path 정확한 계산합니다 스크립트를 포함 user_ini.filename
  2. 사용 auto_prepend_file를 사용
  3. 이 5.3을 실행하는 경우, 지시 php_value를 통해 경로를 포함하고 각 스크립트 앞에 set_include_path()으로 설정하십시오.
+0

필자는 일종의'include_path'가 존재하지 않는 디렉토리도 무시한다고 생각하지만 그럴 것 같지 않습니다. 당신이 확인했기 때문에, 나는 그것에 대해 좀 더 테스트 할 것입니다. 어쩌면 방금 충분히 수표를 찍지 않았을 수도 있습니다. "httpd.conf"아이디어는 좋은 생각이다. 왜 내가 그렇게 생각하지 않았는지 모르지만,'php_value include_path' _append_ include 경로에 그것을 덮어 쓰는 대신에 가질 수있는 방법이 있습니까? –

+0

그래, 그냥 작동하지 않는 것 같습니다. 내'include_path'에서'/ Users/rob/Dropbox/dev/lib/php/classes '앞에'/ Users/rwilkerson/Dropbox/dev/lib/php/classes'를 가지고 있다면 (홈 디렉토리가'/Users/rob' 클래스가로드되지 않습니다. 순서를 바꾸면 –

+0

버그가있는 것 같습니다. 재생산 문제를 bugs.php.net에 제출하고 싶습니까? – StasM

1

나는 또한 여러 대의 컴퓨터 (모든 Mac)에서 개발되며 모든 것을 동기화 상태로 유지하는 가장 쉬운 방법은 git, dropbox 및 zend_config입니다.

나는 부모 자식 디렉토리/git을 가지고 있고 각 프로젝트는/git/projecta/git/projectb입니다. 이렇게하면 $ HOME 또는 ~/

의 문제를 다루지 않습니다.

모든 변경 사항을 제가 dropbox에 푸시하면 모든 컴퓨터에서 실시간으로 동기화됩니다. zend_config와

내가

이 지금까지 공유 라이브러리로, 내가 시도 등 내가 일반적으로 외부 라이브러리, DB PARAMS를 가리 킵니다 /etc/projecta.ini에 저장할 각 프로젝트에 대한 설정 파일을 가지고 각각의 프로젝트가 모든 의존성을 갖도록 유지해야합니다. 각 프로젝트는 응용 프로그램, html/public, library입니다. 라이브러리 폴더에는 배, zend 등이 있습니다.

include_path 문제는 모든 컴퓨터에서 공통 디렉토리에 저장하지 않는 것이 좋습니다. 모든 라이브러리에 대해/usr/local/lib/php을 만든 다음 dropbox에 심볼릭 링크하고 모든 프로젝트에서 동일하게 수행하십시오. 그런 다음 응용 프로그램에서 include_path를/usr/local/lib/php로 설정하거나 php.ini에서 설정하십시오.

관련 문제