디렉터리 구조:
<코드>프로젝트 |---앱 |---공개 |---블로그 프런트엔드 |---홈 |---js |---css |---img |---xxx.md |---생각PHP |---index.php
항목 파일 index.php
의 내용은 다음과 같습니다.
if(version_compare(PHP_VERSION,'5.3.0','<')) die('PHP > 5.3.0 필요 !');
// 디버깅 모드를 켜는 것은 개발 단계에서 켜거나 배포 단계에서 false로 설정하는 것이 좋습니다.
정의('APP_DEBUG',true);
//애플리케이션 디렉토리 정의
정의('APP_PATH','./App/');
//ThinkPHP 엔트리 파일 소개
'./ThinkPHP/ThinkPHP.php'가 필요합니다.
// 친애하는 ^_^ 나중에 코드가 필요하지 않습니다. 간단합니다.
공개 config.php
에 구성됨
'TMPL_PARSE_STRING' =>
'__STATIC__' => __ROOT__ '/공개/블로그-프론트엔드',
),
그리고 뷰에서 Public
을 사용하여 리소스를 사용합니다. 정적 리소스를 도입합니다.
<script src="__STATIC__/Home/js/jquery.min.js"></script>
위 코드에는 문제가 없으며 성공적으로 도입되었습니다.
그러나 컨트롤러에서는
함수 Xaction(){
$file = "/Public/blog-frontend/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
}
출력
거짓
이상하네요, 뷰에서 다시 fopen을 시도했습니다
$file = "__STATIC__/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
출력
거짓
fopen
을 다시 시도하고 file_get_contents
로 바꿨습니다. 컨트롤러의 출력이든 뷰의 출력이든 결과는 여전히 false
였습니다. . 그래서 접미사 .md
를 .txt
로 변경했는데 결과는 여전히 false
였습니다.
어떻게 해결하나요?
보충사항:
@jiny 님의 방법으로 문제가 해결되었습니다.
어떤 이유로 IndexController.class.php에 인쇄합니다
var_dump(__ROOT__);
var_dump(__PUBLIC__)
(위 내용은 기본값이며, 구성하지 않았습니다.)
출력:
문자열(0) ""
string(10) "__PUBLIC__" // if var_dump(__ABCDE__);// string(9) "__ABCDE__"
으아아아
먼저
PHP
가Xaction
메서드를 실행할 때 해당 경로가 무엇인지 이해해야 합니까?ThinkPHP
의 항목 파일은 진입점 역할을 하는데, 이는 메소드의 실행이 실제로 이 파일(다양한require
)에서 완료됨을 의미하므로 경로는Xaction
을 실행하는 메소드가 있는 곳은index.php
가 있는 디렉토리입니다PHP
执行Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种require
),所以执行Xaction
的方法所在路径即为index.php
所在的目录建议使用相对路径
既然知道当前脚本的所在路径,那么要获取
Public
현재 스크립트의 경로를 알았으니
Public
🎜에서 리소스 파일을 얻는 것이 매우 명확합니다. 으아아아 🎜 🎜으아악
기본
__PUBLIC__
인쇄해서 보실 수 있습니다.당신이 테스트한 방식이 옳지 않다고 생각합니다. 아이디어를 증명하기 위해 여러 가지 방법을 사용하려고 서두르지 말고 단계별로 진행하세요.
fopen을 사용할 때 해당 디렉터리 파일이 해당 권한으로 구성되어 있는지 확인하세요.
초대해주셔서 감사합니다!
사용TP
的系统常量__PUBLIC__
인용초대해 주셔서 감사합니다. tp는 config에서 경로를 정의하여 직접 참조할 수 있는 시스템 상수 _PUBLIC_을 제공합니다