삽질-에러-아놔/php 서버 세팅 오류

가상 디렉토리, 가상 호스팅 php 코드 인식 안될 때, .html 파일에서도 php 인식

에혀 2016. 8. 20.

리눅스는 역시 삽질의 연속이다....

먼저 가장 많이 사용하는 디렉토리, 트리 구조가 머리를 집어넣어야 한다. 

아무리 급해도 가장 빠른 방법은.... 외울건 외우고, 흐름을 놓치지 않게 1독, 2독, 3독 해야한다. 역시 나이드니 공부하는 법을 잊어버렸어. ㅠ


etc/ : 가장 많이 사용하는 디렉토리다!


왜 손댔는지 모르겠으나, 가상디렉토리와 가상호스팅 이 두가지로 또 몇 일을 삽질했다.

  1. 가상 디렉토리, 가상 호스팅이 이상 없는지 테스트하는 코드가 보통 요녀석이다. var/www/ 안에 phpinfo.php 파일을 만들고, <? phpinfo() ?> 코드를 넣었는데, 안떴다. 뭐지?=====> 어이없게도 short open tag 사용으로 체크. 즉, 그 전엔 <?php phpinfo() ?>로 하면 떴다.

  2. 가상 디렉토리 ,가상 호스팅 사용하려면? ---> /etc/apache2/apache2.conf 에서 설정!    

  3. 사용자 디렉토리  http://localhost/~kang/ 처럼, 사용자 계정 사용하기
    ㄱ) a2enmod userdir 

    Use command a2enmod to enable Apache2 userdir module. these command will be create symlink /etc/apache2/mods-available/userdir.load and /etc/apache2/mods-available/userdir.conf in to directory /etc/apache2/mods-enable/
    ㄴ) php 사용가능하게 하기.( etc/apache2/mods-available/php5.conf)

    sudo vim /etc/apache2/mods-available/php5.conf
    # <IfModule mod_userdir.c> # <Directory /home/*/public_html> # php_admin_value engine # </Directory> #</IfModule>



  1. 서버 기본 디렉토리에서 index.php 로 만들면 문제없었다.그러나, index.html 로 만들면, 아무것도 뜨지 않았다. ㅠㅠ ( .html 확장자 파일은 php 코드가 인식되지 않았다는 이야기) .html 에서 왜 php 코드가 안먹는 것인지! ---> etc/apache2/mods-enabled/mime.conf 설정

  2. mime.conf 설정하고, 다 됐으나, 사용자마다 서버를 할당해주는 가상호스팅 계정에서는 .php 로 파일을 만들어도, php 코드 인식이 안됐다. ㅠㅠ 아 울고 싶다. --->/etc/php5/php5.conf 파일을 열어서, <IfModule mod_userdir.c> 이 부분을 # 으로 다 주석처리!




etc/apache2/mods-enabled/mime.conf ( htm,html 확장장에서도 php코드 인식하게!)

        AddType application/x-httpd-php .php .php3 .html .htm
        Addtype application/x-httpd-php-source .phps



사용자에게 가상 호스팅으로 웹공간 할애해 주기

첫번째!

/etc/apache2/apache2.conf (~사용자 디렉토리 서버 설정)

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted

</Directory>


두번째! ~사용자 디렉토리 서버에서도 php 코드 사용할 수 있게 주석처리하자!

vi /etc/php5/php5.conf (  )

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>


그런데....

apt-get install phpmyadmin 으로 MySQL 웹관리를 위해 phpMyAdmin 을 설치했는데,

http://localhost/phpmyadmin 으로 접속이 안됐다....이건 뭥미.

phpmyadmin 은 /usr/share/phpmyadmin 디렉토리로 설치돼있다.


apache2.conf 의 가상 디렉토리 설정을 보면 <Directory ... 머 어쩌고에...

usr/share 가 기본빵으로 들어가 있는데, 왜 안되는 것일까....

웹문서의 루트(기본) 디렉토리는 /var/www 로 설정이 돼 있는데, 그러면, usr/share 는 웹에서 어떤식으로 인식이 될까? 이것이 궁금했다. 즉, /var/www/ 이 있을 때, 브라우저 주소창에 http://localhost로 접근이 되는데, /usr/share/ 에도 index.html 이 있다고 가정하면, http://localhost/usr/share/index.html 이라고 해야하나? 뭐지? ㅠㅠ 제길.

어찌됐건, apache2.conf 파일을 열고, 디렉토리 부분에 Alias / "usr/share" 라고 써주니 해결됐다.

/etc/init.d/apache2 restart : 아파치 재시작 명령

/etc/mysql/my.cnf



댓글