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__"
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