cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah ThinkPHP 3.2 membaca fail sumber di bawah Awam?

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

awam
'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__"
我想大声告诉你我想大声告诉你2782 hari yang lalu757

membalas semua(7)saya akan balas

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新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'] 

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:11:39

    1. 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 所在的目录

    2. 建议使用相对路径
      既然知道当前脚本的所在路径,那么要获取 Public

    Adalah disyorkan untuk menggunakan laluan relatif
    Sekarang anda mengetahui laluan skrip semasa, adalah sangat jelas untuk mendapatkan fail sumber di bawah Awam🎜
    $file = './Public/blog-frontend/Home/xxx.md'
    🎜 🎜

    balas
    0
  • PHP中文网

    PHP中文网2017-05-16 13:11:39

    我一般用$file = __ROOT__."/Public/Home/xxx.md";

    balas
    0
  • 迷茫

    迷茫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.

    balas
    0
  • 某草草

    某草草2017-05-16 13:11:39

    Apabila menggunakan fopen, semak sama ada fail direktori dikonfigurasikan dengan kebenaran yang sepadan Ini mungkin sebabnya.

    balas
    0
  • 漂亮男人

    漂亮男人2017-05-16 13:11:39

    Terima kasih atas jemputan! Gunakan TP的系统常量__PUBLIC__Petikan

    balas
    0
  • 天蓬老师

    天蓬老师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

    balas
    0
  • Batalbalas