Rumah > Soal Jawab > teks badan
Struktur direktori:
projek
|---Apl
|---Awam
|---blog-frontend
|---Rumah
|---js
|---css
|---img
|---xxx.md
|---ThinkPHP
|---index.php
Kandungan fail masukan index.php
adalah seperti berikut:
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// Hidupkan mod penyahpepijatan adalah disyorkan untuk menghidupkannya semasa peringkat pembangunan atau menetapkannya kepada palsu semasa peringkat penggunaan.
define('APP_DEBUG',true);
//Tentukan direktori aplikasi
define('APP_PATH','./App/');
//Perkenalkan fail masuk ThinkPHP
memerlukan './ThinkPHP/ThinkPHP.php';
// Sayang ^_^ Anda tidak memerlukan sebarang kod kemudian, ia semudah itu
Dikonfigurasikan dalam config.php
'TMPL_PARSE_STRING' =>
'__STATIC__' => __ROOT__ .
),
Dan gunakan sumber menggunakan Awam
dalam paparan: perkenalkan sumber statik
<script src="__STATIC__/Home/js/jquery.min.js"></script>
Tiada masalah dengan kod di atas dan ia telah berjaya diperkenalkan.
Walau bagaimanapun, dalam pengawal
function Xaction(){
$file = "/Public/blog-frontend/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
}
Output
false
Pelik, saya cuba fopen dalam paparan semula
$file = "__STATIC__/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
Output
false
Saya mencuba sekali lagi fopen
dan menggantikannya dengan file_get_contents
Hasilnya masih false
sama ada ia adalah output dalam pengawal atau paparan . Jadi saya menukar akhiran .md
kepada .txt
dan hasilnya masih false
.
Bagaimana untuk menyelesaikannya?
Tambahan:
Terima kasih atas bantuan anda Melalui kaedah @jiny, masalah telah diselesaikan.
Atas sebab tertentu, saya mencetaknya dalam IndexController.class.php
var_dump(__ROOT__);
var_dump(__PUBLIC__);
(Di atas ialah lalai, saya belum mengkonfigurasinya.)
output:
rentetan(0) ""
string(10) "__PUBLIC__" // jika var_dump(__ABCDE__);// string(9) "__ABCDE__"
曾经蜡笔没有小新2017-05-16 13:11:39
function Xaction(){
$file = $_SERVER['DOCUMENT_ROOT']."/Public/blog-frontend/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
}
//在控制器里要这么写 $_SERVER['DOCUMENT_ROOT']
習慣沉默2017-05-16 13:11:39
Pertama sekali, anda perlu memahami apakah laluan yang sepadan apabila PHP
melaksanakan kaedah Xaction
? Fail masukan dalam ThinkPHP
berfungsi sebagai titik masuk, yang bermaksud bahawa pelaksanaan kaedah sebenarnya telah selesai dalam fail ini (pelbagai memerlukan
) , jadi laluan di mana kaedah melaksanakan Xaction
terletak ialah direktori di mana index.php
terletakPHP
执行 Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种 require
),所以执行 Xaction
的方法所在路径即为 index.php
所在的目录
建议使用相对路径
既然知道当前脚本的所在路径,那么要获取 Public
$file = './Public/blog-frontend/Home/xxx.md'
🎜
🎜迷茫2017-05-16 13:11:39
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.
某草草2017-05-16 13:11:39
Apabila menggunakan fopen, semak sama ada fail direktori dikonfigurasikan dengan kebenaran yang sepadan Ini mungkin sebabnya.
天蓬老师2017-05-16 13:11:39
Terima kasih atas jemputan, tp menyediakan pemalar sistem _PUBLIC_, yang boleh dirujuk terus dengan menentukan laluan di bawah konfigurasi