require_once의 상대 경로가 작동하지 않음
나는 다음과 같은 구조를 가지고 있다.
otsg
> class
> authentication.php
> database.php
> user.php
> include
> config.inc.php
> encryption.php
> include.php
> session.php
> index.php
> registration.php
포함하다.php 파일에는 다음이 있습니다.
ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('include_path',ini_get('include_path').':/Applications/MAMP/htdocs/otsg/:');
require_once 'config.inc.php';
require_once '../class/database.php';
require_once '../class/user.php';
require_once 'encryption.php';
require_once 'session.php';
require_once '../class/authentication.php';
index.php 페이지에 포함시켰습니다.
require_once 'include/include.php';
페이지 index.php를 열면 다음과 같은 경고와 치명적인 오류가 나타납니다.이 에러의 원인을 알 수 없습니다.내가 절대적인 길을 제시하자 효과가 있었다.하지만 절대적인 길은 좋은 생각이 아니야
Warning: require_once(../class/database.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/otsg/include/include.php on line 9
Fatal error: require_once() [function.require]: Failed opening required '../class/database.php' (include_path='.:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/htdocs/otsg/include/:') in /Applications/MAMP/htdocs/otsg/include/include.php on line 9
잘 부탁드립니다
사용하다
__DIR__
스크립트의 현재 경로를 가져오면 문제가 해결됩니다.
그래서:
require_once(__DIR__.'/../class/user.php');
이렇게 하면 다른 폴더에서 PHP 스크립트를 실행할 수 있으므로 관련 경로가 작동하지 않습니다.
편집: 슬래시 문제가 수정되었습니다.
php 버전 5.2.17의 경우__DIR__php 5.3에서만 동작합니다.
단, 이전 버전의 php의 경우dirname(__FILE__)완벽하게
예를 들면 이렇게 쓰세요.
require_once dirname(__FILE__) . '/db_config.php';
저 같은 경우에는 안 돼요.__DIR__또는getcwd()잘못된 경로를 계속 선택하고 프로젝트의 절대 기본 경로를 사용하여 필요한 모든 파일에 비용 요소를 정의함으로써 해결했습니다.
if(!defined('THISBASEPATH')){ define('THISBASEPATH', '/mypath/'); }
require_once THISBASEPATH.'cache/crud.php';
/*every other require_once you need*/
php 5.4.10을 사용하는 MAMP를 가지고 있으며 폴더 계층은 기본 계층입니다.
q.php
w.php
e.php
r.php
cache/a.php
cache/b.php
setting/a.php
setting/b.php
....
이 같은 문제를 우연히 발견했는데, 이 문제에서는 모든 것이 정상적으로 동작하고 있었습니다.다른 문제를 포함시킬 때까지입니다.
require_once '../script/pdocrud.php'; //This worked fine up until I had an includes within another includes, then I got this error:
Fatal error: require_once() [function.require]: Failed opening required '../script/pdocrud.php' (include_path='.:/opt/php52/lib/php')
해결 방법 1. (공용 html 폴더 이름의 불필요한 하드코딩은 가능하지만 동작합니다.)
require_once $_SERVER["DOCUMENT_ROOT"] . '/orders.simplystyles.com/script/pdocrud.php';
솔루션 2. (위의 DIR에 대한 불필요한 코멘트는 php 5.3 이후부터 기능하고 있습니다만, 동작하고 있습니다.
require_once __DIR__. '/../script/pdocrud.php';
해결책 3. (어떤 단점도 볼 수 없고, 내 php 5.3에서는 완벽하게 동작한다.)
require_once dirname(__FILE__). '/../script/pdocrud.php';
언급URL : https://stackoverflow.com/questions/5371828/relative-path-in-require-once-doesnt-work
'source' 카테고리의 다른 글
| mariadb on fedora의 기본 비밀번호는 무엇입니까? (0) | 2023.02.04 |
|---|---|
| Java 컴파일 속도 vs Scala 컴파일 속도 (0) | 2023.02.04 |
| MySQL tinyInt에서 인덱싱할 수 있습니까? (0) | 2023.01.25 |
| MySQL phpMyAdmin: 오류 #1932 - 엔진에 테이블이 없습니다. (0) | 2023.01.25 |
| MySQL에서 마지막으로 실행된 쿼리를 표시하는 방법 (0) | 2023.01.25 |