目录结构:
project
|---App
|---Public
|---blog-frontend
|---Home
|---js
|---css
|---img
|---xxx.md
|---ThinkPHP
|---index.php
入口文件index.php
内容如下:
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',true);
// 定义应用目录
define('APP_PATH','./App/');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
// 亲^_^ 后面不需要任何代码了 就是如此简单
在公共 config.php
配置过
'TMPL_PARSE_STRING' => array(
'__STATIC__' => __ROOT__ . '/Public/blog-frontend',
),
并且使用在view中使用 Public
的资源:引入静态资源
<script src="__STATIC__/Home/js/jquery.min.js"></script>
上面代码是没有问题,引入成功。
然而在控制器中
function Xaction(){
$file = "/Public/blog-frontend/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
}
输出
false
奇怪,我又在 view 里面去试着 fopen
$file = "__STATIC__/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
输出
false
我又试了 fopen
换成 file_get_contents
结果不管是控制器中或者view中的输出还是false
。我于是把后缀的.md
换成了.txt
结果还是false
。
请问如何解决?
补充:
谢谢各位的帮助,通过 @jiny 的方法,问题已经解决了。
不知道出于什么原因,在下在 IndexController.class.php 打印
var_dump(__ROOT__);
var_dump(__PUBLIC__);
(以上是默认的,我没有配置过。)
output:
string(0) ""
string(10) "__PUBLIC__" // 如果var_dump(__ABCDE__);// string(9) "__ABCDE__"
習慣沉默2017-05-16 13:11:39
먼저 PHP
가 Xaction
메서드를 실행할 때 해당 경로가 무엇인지 이해해야 합니까? ThinkPHP
의 항목 파일은 진입점 역할을 하는데, 이는 메소드의 실행이 실제로 이 파일(다양한 require
)에서 완료됨을 의미하므로 경로는 Xaction
을 실행하는 메소드가 있는 곳은 index.php
가 있는 디렉토리입니다PHP
执行 Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种 require
),所以执行 Xaction
的方法所在路径即为 index.php
所在的目录
建议使用相对路径
既然知道当前脚本的所在路径,那么要获取 Public
Public
🎜에서 리소스 파일을 얻는 것이 매우 명확합니다.
으아아아
🎜
🎜迷茫2017-05-16 13:11:39
기본__PUBLIC__
인쇄해서 보실 수 있습니다.
당신이 테스트한 방식이 옳지 않다고 생각합니다. 아이디어를 증명하기 위해 여러 가지 방법을 사용하려고 서두르지 말고 단계별로 진행하세요.