目录结构:
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__"
Pertama sekali, anda perlu memahami apakah laluan yang sepadan apabila
PHP
melaksanakan kaedahXaction
? Fail masukan dalamThinkPHP
berfungsi sebagai titik masuk, yang bermaksud bahawa pelaksanaan kaedah sebenarnya telah selesai dalam fail ini (pelbagaimemerlukan
) , jadi laluan di mana kaedah melaksanakanXaction
terletak ialah direktori di manaindex.php
terletakPHP
执行Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种require
),所以执行Xaction
的方法所在路径即为index.php
所在的目录建议使用相对路径
既然知道当前脚本的所在路径,那么要获取
Public
Sekarang anda mengetahui laluan skrip semasa, adalah sangat jelas untuk mendapatkan fail sumber di bawah
Lalai
__PUBLIC__
Anda boleh mencetak dan melihatnya.Saya tidak fikir cara anda menguji adalah betul. Jangan tergesa-gesa menggunakan pelbagai cara untuk membuktikan idea anda dan lakukan langkah demi langkah.
Apabila menggunakan fopen, semak sama ada fail direktori dikonfigurasikan dengan kebenaran yang sepadan Ini mungkin sebabnya.
Terima kasih atas jemputan! Gunakan
TP
的系统常量__PUBLIC__
PetikanTerima kasih atas jemputan, tp menyediakan pemalar sistem _PUBLIC_, yang boleh dirujuk terus dengan menentukan laluan di bawah konfigurasi