CI 묻고 답하기

제목 절대경로 문제(config)
글쓴이 DevCIer 작성시각 2011/02/14 12:14:21
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 46502   RSS
안녕하세요..
질문 안올리고 검색 해서 찾을려고 했는데 아침부터 지금까지 이미지 출력 하나로 헤메고 있어서 질문 드립니다.
이미지 절대경로로 불러오는게 되면 asset에 있는 css/swf/js/ajax 등등 모두 경로를 절대경로로 바꿀려고 합니다.
(현재는 ../ ../../ 이런 경로로 되어 있고 ajax시에는 또 include 되는 layout의 최상위경로 기준으로 ./어쩌구 이런식이라 경로가 너무 헷갈려서
코드이그나이터로 할때 모든걸 절대경로로 할려고 합니다.

 

제 폴더 구조구요 assets/images/a.jpg 이 이미지를 불러올려고 합니다.

url에서 http://해당 도메인으로 접속하면 기본적으로 index불러오면서 a.jpg를 뷰에서 뿌려주게 해놨는데

<img src="/assets/images/a.jpg"> 하면 엑박이 뜹니다.

반면에
<img src="assets/images/a.jpg"> 하면 잘 불어와 집니다.

나중에 서버 이전시에도 경로 수정없이 쓸수 있도록 용이 하도록 절대경로로 모든 경로를 바꾸고 싶은데요

참고로 서버의 사이트 경로는 /루트 경로가 아니고 서브 디렉토리에 있습니다.
아마 이게 문제 되는거 같은데

서버 경로 : /var/www/html/ci/20/에 위쪽 스샷 폴더들이 존재합니다.

/var/www/html/ci/20/app/
--------------------------/system/
------------------------- /assets/
                                         |_____ images/
                                                             |_____ a.jpg




이렇습니다.

무엇이 문제인지 아시는분 계시면 도움좀 부탁드려요 ^^;




<img src="/ci/20/assets/images/baby.jpg">
요렇게 하니 되네요.
그냥 /assets/images/를 할려면 음..

-- 말씀하신 config 입니다. ------------
특별히 바꾼건 없습니다 ㅜㅜ



<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|
| If this is not set then CodeIgniter will guess the protocol, domain and
| path to your installation.
|
*/
$config['base_url'] = '';
 
/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = 'index.php';
 
/*
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'AUTO' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
 
/*
|--------------------------------------------------------------------------
| URL suffix
|--------------------------------------------------------------------------
|
| This option allows you to add a suffix to all URLs generated by CodeIgniter.
| For more information please see the user guide:
|
*/
 
$config['url_suffix'] = '';
 
/*
|--------------------------------------------------------------------------
| Default Language
|--------------------------------------------------------------------------
|
| This determines which set of language files should be used. Make sure
| there is an available translation if you intend to use something other
| than english.
|
*/
$config['language'] = 'english';
 
/*
|--------------------------------------------------------------------------
| Default Character Set
|--------------------------------------------------------------------------
|
| This determines which character set is used by default in various methods
| that require a character set to be provided.
|
*/
$config['charset'] = 'UTF-8';
 
/*
|--------------------------------------------------------------------------
| Enable/Disable System Hooks
|--------------------------------------------------------------------------
|
| If you would like to use the 'hooks' feature you must enable it by
| setting this variable to TRUE (boolean).  See the user guide for details.
|
*/
$config['enable_hooks'] = FALSE;
 
 
/*
|--------------------------------------------------------------------------
| Class Extension Prefix
|--------------------------------------------------------------------------
|
| This item allows you to set the filename/classname prefix when extending
| native libraries.  For more information please see the user guide:
|
|
*/
$config['subclass_prefix'] = 'MY_';
 
 
/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify with a regular expression which characters are permitted
| within your URLs.  When someone tries to submit a URL with disallowed
| characters they will get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
 
 
/*
|--------------------------------------------------------------------------
| Enable Query Strings
|--------------------------------------------------------------------------
|
| By default CodeIgniter uses search-engine friendly segment based URLs:
| example.com/who/what/where/
|
| By default CodeIgniter enables access to the $_GET array.  If for some
| reason you would like to disable it, set 'allow_get_array' to FALSE.
|
| You can optionally enable standard query string based URLs:
| example.com?who=me&what=something&where=here
|
| Options are: TRUE or FALSE (boolean)
|
| The other items let you set the query string 'words' that will
| invoke your controllers and its functions:
| example.com/index.php?c=controller&m=function
|
| Please note that some of the helpers won't work as expected when
| this feature is enabled, since CodeIgniter is designed primarily to
| use segment based URLs.
|
*/
$config['allow_get_array'] = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd'; // experimental not currently in use
 
/*
|--------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------
|
| If you have enabled error logging, you can set an error threshold to
| determine what gets logged. Threshold options are:
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Threshold options are:
|
| 0 = Disables logging, Error logging TURNED OFF
| 1 = Error Messages (including PHP errors)
| 2 = Debug Messages
| 3 = Informational Messages
| 4 = All Messages
|
| For a live site you'll usually only enable Errors (1) to be logged otherwise
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;
 
/*
|--------------------------------------------------------------------------
| Error Logging Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| application/logs/ folder. Use a full server path with trailing slash.
|
*/
$config['log_path'] = '';
 
/*
|--------------------------------------------------------------------------
| Date Format for Logs
|--------------------------------------------------------------------------
|
| Each item that is logged has an associated date. You can use PHP date
| codes to set your own date formatting
|
*/
$config['log_date_format'] = 'Y-m-d H:i:s';
 
/*
|--------------------------------------------------------------------------
| Cache Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| system/cache/ folder.  Use a full server path with trailing slash.
|
*/
$config['cache_path'] = '';
 
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| If you use the Encryption class or the Session class you
| MUST set an encryption key.  See the user guide for info.
|
*/
$config['encryption_key'] = '';
 
/*
|--------------------------------------------------------------------------
| Session Variables
|--------------------------------------------------------------------------
|
| 'sess_cookie_name' = the name you want for the cookie
| 'sess_expiration' = the number of SECONDS you want the session to last.
|   by default sessions last 7200 seconds (two hours).  Set to zero for no expiration.
| 'sess_expire_on_close' = Whether to cause the session to expire automatically
|   when the browser window is closed
| 'sess_encrypt_cookie' = Whether to encrypt the cookie
| 'sess_use_database' = Whether to save the session data to a database
| 'sess_table_name' = The name of the session database table
| 'sess_match_ip' = Whether to match the user's IP address when reading the session data
| 'sess_match_useragent' = Whether to match the User Agent when reading the session data
| 'sess_time_to_update' = how many seconds between CI refreshing Session Information
|
*/
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
 
/*
|--------------------------------------------------------------------------
| Cookie Related Variables
|--------------------------------------------------------------------------
|
| 'cookie_prefix' = Set a prefix if you need to avoid collisions
| 'cookie_domain' = Set to .your-domain.com for site-wide cookies
| 'cookie_path'   =  Typically will be a forward slash
|
*/
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
 
/*
|--------------------------------------------------------------------------
| Global XSS Filtering
|--------------------------------------------------------------------------
|
| Determines whether the XSS filter is always active when GET, POST or
| COOKIE data is encountered
|
*/
$config['global_xss_filtering'] = FALSE;
 
/*
|--------------------------------------------------------------------------
| Cross Site Request Forgery
|--------------------------------------------------------------------------
| Enables a CSRF cookie token to be set. When set to TRUE, token will be
| checked on a submitted form. If you are accepting user data, it is strongly
| recommended CSRF protection be enabled.
|
| 'csrf_token_name' = The token name
| 'csrf_cookie_name' = The cookie name
| 'csrf_expire' = The number in seconds the token should expire.
*/
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
 
/*
|--------------------------------------------------------------------------
| Output Compression
|--------------------------------------------------------------------------
|
| Enables Gzip output compression for faster page loads.  When enabled,
| the output class will test whether your server supports Gzip.
| Even if it does, however, not all browsers support compression
| so enable only if you are reasonably sure your visitors can handle it.
|
| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
| means you are prematurely outputting something to your browser. It could
| even be a line of whitespace at the end of one of your scripts.  For
| compression to work, nothing can be sent before the output buffer is called
| by the output class.  Do not 'echo' any values with compression enabled.
|
*/
$config['compress_output'] = FALSE;
 
/*
|--------------------------------------------------------------------------
| Master Time Reference
|--------------------------------------------------------------------------
|
| Options are 'local' or 'gmt'.  This pref tells the system whether to use
| your server's local time as the master 'now' reference, or convert it to
| GMT.  See the 'date helper' page of the user guide for information
| regarding date handling.
|
*/
$config['time_reference'] = 'local';
 
 
/*
|--------------------------------------------------------------------------
| Rewrite PHP Short Tags
|--------------------------------------------------------------------------
|
| If your PHP installation does not have short tag support enabled CI
| can rewrite the tags on-the-fly, enabling you to utilize that syntax
| in your view files.  Options are TRUE or FALSE (boolean)
|
*/
$config['rewrite_short_tags'] = FALSE;
 
 
/*
|--------------------------------------------------------------------------
| Reverse Proxy IPs
|--------------------------------------------------------------------------
|
| If your server is behind a reverse proxy, you must whitelist the proxy IP
| addresses from which CodeIgniter should trust the HTTP_X_FORWARDED_FOR
| header in order to properly identify the visitor's IP address.
| Comma-delimited, e.g. '10.0.1.200,10.0.1.201'
|
*/
$config['proxy_ips'] = '';
 
 
/* End of file config.php */
/* Location: ./application/config/config.php */







 다음글 마냐님 공개 보드에 관하여... (1)
 이전글 포럼소스에서 (3)

댓글

criuce / 2011/02/14 13:17:41 / 추천 0
 위에는 절대 경로고 아래는 상대경로인데요, 절대경로의 경우 모든 경로를 다 적어 주셔야 합니다.
/var/www/html/ci/20/app/assets/images/a.jpg 이런식으로요..
DevCIer / 2011/02/14 14:00:49 / 추천 0
 /var/www/html/ci/20/app/assets/images/a.jpg가 아니고
/assets/image/a.jpg로 쓰고 싶습니다.

변종원(웅파) / 2011/02/14 18:45:19 / 추천 0
config.php 내용을 올려주세요.

통상적으로 아래와 같은 구조에서 index.php의 위치를 기준으로 /asset 의 형태로 사용할 수 있습니다.
(1.7.3까지는)

asset
application
system
index.php
DevCIer / 2011/02/15 09:33:54 / 추천 0
 제 구조가 말씀하신 구조와 같은데 
/ci/20/assets/images/a.jpg는 됩니다.
아마 도큐먼트 루트부터 인식해서 그런거 같은데.. config에서 뭔가를 설정해주면 되려나요.. 끙..
apache 설정 문젠가.
변종원(웅파) / 2011/02/15 09:47:42 / 추천 0
apache에서 /var/www/html 이 document root로 설정되어 있습니다. (설정을 건드리지 않은 상태라면)

DocumentRoot 를 /var/www/html/ci/20 으로 설정하시면 원하는대로 되기는 하는데
다른 사이트와 충돌(?)을 고려해봐야할 것 같습니다.

사이트 하나만 있다면 수정해서 사용하셔도 되구요.
DevCIer / 2011/02/15 10:34:41 / 추천 0
답변 감사드립니다.
넵 맞습니다.
httpd에 DocumentRoot를 ci/20으로 바꿔버리면 간단히 해결 될 문제 입니다만
사이트가 하나가 아니라서 제가 고민 중입니다 ㅠㅠ
각각 
/var/www/html/ci/20/application
                                |_/system
                                |_/asset
                         /다른사이트1/
                        /다른사이트2/
이렇게 여러개가 있어서
아... 방법이 없는건지.. 
이런 상황은 잦을 거 같은데 이런 문제로 사용중이신분~~ 알려주세용..
계속 구글링 중인데.. 해답이 잘 안 찾아 지네용..

변종원(웅파) / 2011/02/15 10:53:05 / 추천 0
  1. <VirtualHost *:80>
        ServerAdmin root@myhome.pe.kr
        DocumentRoot "/home/web"
        ServerName myhome.pe.kr
        ServerAlias myhome.pe.kr
        ErrorLog "logs/myhome.pe.kr-error_log"
        CustomLog "logs/myhome.pe.kr-access_log" common
        <Directory />
            Options FollowSymLinks
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
apache virtualhost에 각각 주시면 됩니다. ^^;
변종원(웅파) / 2011/02/15 10:56:17 / 추천 0
상수로 선언하여 사용하셔도 되는데 굳이 그렇게 사용하시려는 이유는 뭘까요?
(궁금해서 여쭤봅니다.)

constants.php

define('DOC_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('ASSET_ROOT', DOC_ROOT.'/ci/20/assets');


view

<img src="<?php echo ASSET_ROOT?>/image/aa.jpg">
DevCIer / 2011/02/15 11:56:58 / 추천 0
 앗 넵.
1.현재는 ../ 이런 상대경로로 했는 모든 코드에 <?php를 넣어서 해야해서 번거롭기도 하구요
   (어차피 /로 바꾸면 한번 작업을 해야 하긴 하지만)

2.디자이너분과 협업중인데 기왕이면 <?가 들어가는것 보다는 디자이너분도 알 수 있는 /경로로 해주는게
   디자이너 분에게도 더좋을거 같아서요. 더 직관적이기도 할테구. 
  저도 가독성 상 /경로가 일반적이니 더 괜찮을거 같아서입니다.

3.사이트가 CI보기전의 날코딩으로 되어 있어서 진행이 좀 되었습니다. (CI 보는 순간 눈이번쩍했습니다.ㅎㅎ )
    <?를 넣으면 넣어줘야 할 부분이 꽤 되어서 입니다.

이상이 이유입니당. 1.3번은 비슷한 이유네용.
   
제가 일반적인 경우가 아닌가요? -- ㅜㅜ

답변 감사드립니당
변종원(웅파) / 2011/02/15 13:07:52 / 추천 0
DevCler/ 일반적입니다. ^^
전 다만, 이런 방법도 있고 저런 방법도 있고 해서 여쭤본겁니다.
제가 뒷배경을 모르니까 제 경험상의 방법만 알려드릴 수밖에 없어서요. ^^
DevCIer / 2011/02/15 17:19:20 / 추천 0
제가 설정을 잘못하여 몇몇 문제가 있긴 하지만 
웅파님께 힌트를 얻어 virtualhost로 셋팅 하는 방향으로 가고 있습니다.

이제 기존날코딩 -> CI로 변환 작업만 남았습니다.

언제나 답변 너무 감사드립니다.