CakePHP를 윈도우에 설치하고 사용할 때는 큰 문제가 없었지만, 집에서 맥에 다시 설치하다보니 문제가 생겨서 쓰레드를 열게 되었다.


먼저 윈도우에 설치하는 방법에 대해서는 "CakePHP 프레임워크 사용 이력 - 설치하기"를 참고하라.


맥에 운영 버전으로 설치할 때의 문제는 아파치 설정 파일(/etc/apache2/httpd.conf) 파일을 수정할 수 없다는 점이다. 물론 수정할 수 있는 방법이 있지만, 왜 시스템에서 보호해놨는지 생각해 보면 굳이 수정하지 않고도 사용할 방법이 있다는 뜻일 것이다.


일단 개발 버전으로 CakePHP를 설치하려고 했는데, 몇가지 어려움이 있었다. 여기에 관련된 작업을 정리해본다.



설치하기


CakePHP 파일을 다운로드 한 후, ~user/Sites/cakephp-2.3.7에 설치했다.



아파치 개인 설정 파일 수정하기


/etc/apache2/users/[USER NAME].conf 을 아래와 같이 수정한다.

<Directory "/Users/socurites/Sites/">

#Options Indexes Multiviews

Options Indexes FollowSymLinks Multiviews

#AllowOverride AuthConfig Limit

AllowOverride All

Order allow,deny

Allow from all

</Directory>


아파치 서버를 재기동한다. 브라우저를 열어 http://localhost/~[USER NAME]/cakephp-2.3.7/test.php 로 접속해 본다. 아래와 같은 404 Not Found 에러가 발생한다.

The requested URL /Users/[USER NAME]/Sites/cakephp-2.3.7/app/webroot/test.php was not found on this server.


나와 동일한 문제를 겪는 쓰레드를 발견했으며 링크는 다음과 같다

>>> fixing cakephp .htaccess/mod_rewrite for shared hosting setups


확인 결과, URL 부분의 틸타(~)로 인해 발생한 것으로 보인다. CakePHP 설치 디렉토리의 .htaccess 파일을 열어서 아래와 같이 수정한다.

<IfModule mod_rewrite.c>

   RewriteEngine on

   RewriteBase /~[USER NAME]/cakephp-2.3.7/    <--- 추가한 부분

   # RewriteRule    ^$ app/webroot/    [L]                          <--- 주석 처리

   # RewriteRule    (.*) app/webroot/$1 [L]                       <--- 주석 처리

   RewriteCond %{REQUEST_FILENAME} !-d           <--- 추가한 부분

   RewriteCond %{REQUEST_FILENAME} !-f           <--- 추가한 부분

   RewriteRule ^(.*)$ index.php [QSA,L]                <--- 추가한 부분

</IfModule>


브라우저를 열어 다시 접속해 보면 아래와 같은 에러 메시지가 나온다.


Warning: _cake_core_ cache was unable to write 'cake_dev_en-us' to File cache in /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/Cache/Cache.php on line 310 Warning: /Users/socurites/Sites/cakephp-2.3.7/app/tmp/cache/persistent/ is not writable in /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/Cache/Engine/FileEngine.php on line 337 Fatal error: Uncaught exception 'CacheException' with message 'Cache engine _cake_core_ is not properly configured.' in /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/Cache/Cache.php:166 Stack trace: #0 /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/Cache/Cache.php(136): Cache::_buildEngine('_cake_core_') #1 /Users/socurites/Sites/cakephp-2.3.7/app/Config/core.php(336): Cache::config('_cake_core_', Array) #2 /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/Core/Configure.php(78): include('/Users/socurite...') #3 /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/bootstrap.php(171): Configure::bootstrap(true) #4 /Users/socurites/Sites/cakephp-2.3.7/app/webroot/test.php(82): include('/Users/socurite...') #5 {main} thrown in /Users/socurites/Sites/cakephp-2.3.7/lib/Cake/Cache/Cache.php on line 166


CakePHP 설치 디렉토리의 app/tmp 디렉토리에 웹서버가 쓰기 권한이 없어서 그렇다. 권한을 777로 바꾼 후 재접속한다. 아래와 같이 2개의 경고문이 뜨는 것을 확인할 수 있다. 나머지 작업은 윈도우에서 작업한 이력과 동일하다.




Posted by socurites
TAG ,

댓글을 달아 주세요