문제

Mac에서 여러 PHP 앱을 실행하여 OS X 10.5.6, Apache 2, PHP 5를 실행하고 있습니다. 각 프로젝트에 대한 하위 도메인 설정, 각 하위 도메인에 대한 호스트 파일 항목 및 APACHE 구성의 가상 디렉토리 블록이 있습니다. 그래서

project1.localhost로 이동/도서관/웹 서버/문서/project1
project2.localhost로 이동/라이브러리/웹 서버/문서/project2로 이동
등...

그러나이 방법은 실제로 웹 앱을 "분리"하지 않습니다. 예를 들어, SO와 같은 스크립트를 포함하면 다음과 같습니다.

<?php
include("/includes/include.php");
?>

내 컴퓨터의 기본 디렉토리에서 스크립트를 참조합니다. 그래서 그것은 접근합니다
C :/includes/include.php

내가 참조 할 수있는 방법이 있습니까?
C : /library/webserver/documents/project2/includes/include.php

기본적으로 자체 디렉토리 이외의 것을 인식하지 않도록하십시오. 또한 php.ini를 하위 도메인별로 사용하는 방법이 있습니까?

도움이 되었습니까?

해결책

가상 호스트 당 php.ini를 설정할 수 있다고 생각합니다.

<VirtualHost *:80>
    ...

    PHPINIDir /full/path/to/php/ini/

</VirtualHost>

이렇게하면 Open_basedir 및 기타를 사용자 정의 할 수 있습니다

다른 팁

스크립트를 제한 할 수 있습니다. Open_basedir httpd.conf 파일의 폴더 블록을 지시하십시오. 그것은 다음과 같아야합니다.

u003CDIRECTORY /full/path/to/folder/containing/script/>

php_admin_value open_basedir "/full/path/to/top/folder/of/desired/tree/"

u003C/DIRECTORY>

한 가지 - a /로 경로를 끝내지 않으면 와일드 카드 일치입니다. 다시 말해, "/var/etc/my"는 "/var/etc/myfolder"와 "/var/etc/mymothersfolder"뿐만 아니라 "/var/etc/my/"는 그 정확한 폴더 만 일치합니다. 이름.

응용 프로그램 격리와 관련하여 ~와 관련하여입니다 안전 PHP 스크립트가 다른 사람에게 액세스 할 수 없습니까? 자세히 설명 해주세요 -

php.ini와 관련하여 - 디렉토리 당 특정 php.ini를 사용하는 방법을 알지 못하지만 INI_SET () 행이 많은 페이지를 포함하여 PHP를 포함시킬 수 있습니다.

<?php
  // in your header or along top of all php modules in your pap
  require_once ( '/path/to/includes/ini_set.php' );

  // ...

?>

그리고 ini_set.php 스크립트 :

<?php
  // one of these for each override of defaults set in php.ini file --
  ini_set ( $varname, $newvalue );
  ini_set ( $varname, $newvalue );
  ini_set ( $varname, $newvalue );
?>

INI_SET () 함수에 대해 자세히 알고 싶다면 php.net의 문서 페이지가 있습니다. http://us3.php.net/ini_set

이것이 다소 도움이 되었기를 바랍니다 ~

그렇게하는 가장 좋은 방법은 fcgi (mod_fcgid)를 통해 PHP를 사용하는 것입니다. 이렇게하면 다른 사용자와 Vhost 당 다른 php.ini를 사용하여 PHP를 실행할 수 있습니다.

다음은 Ubuntu에서 이러한 구성을 설정하는 방법입니다. http://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-8.10

전체 경로 이름을 사용하려면 다음을 사용할 수 있습니다.

<?php
include  dirname( __FILE__ ) . '/includes/include.php';
?>

php.ini 파일에 대한 가능한 솔루션

상대 경로를 시도하십시오! 처럼:

<?php
include("./includes/include.php");
?>

또는

<?php
include("includes/include.php");
?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top