Maison > Questions et réponses > le corps du texte
Structure des répertoires :
projet
|---Application
|---Public
|---blog-frontend
|---Accueil
|---js
|---css
|---img
|---xxx.md
|---PensezPHP
|---index.php
Le contenu du fichier d'entrée index.php
est le suivant :
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// Activez le mode débogage. Il est recommandé de l'activer pendant la phase de développement ou de le définir sur false pendant la phase de déploiement.
définir('APP_DEBUG',true);
//Définir le répertoire de l'application
définir('APP_PATH','./App/');
//Présentation du fichier d'entrée ThinkPHP
nécessite './ThinkPHP/ThinkPHP.php';
// Cher ^_^ Vous n'aurez besoin d'aucun code plus tard, c'est aussi simple que cela
Configuré en public config.php
'TMPL_PARSE_STRING' =>
'__STATIC__' => __ROOT__ '/Public/blog-frontend',
),
Et utilisez les ressources en utilisant Public
dans la vue : introduisez des ressources statiques
<script src="__STATIC__/Home/js/jquery.min.js"></script>
Il n'y a aucun problème avec le code ci-dessus et il a été introduit avec succès.
Cependant, dans le contrôleur
fonction Xaction(){
$file = "/Public/blog-frontend/Home/xxx.md";
$fopen = fopen($fichier,'r');
var_dump($fopen);
Sortie
faux
Étrange, j'ai réessayé d'ouvrir la vue
$file = "__STATIC__/Home/xxx.md";
$fopen = fopen($fichier,'r');
var_dump($fopen);
Sortie
faux
J'ai réessayé fopen
et je l'ai remplacé par file_get_contents
. Le résultat était toujours false
, qu'il s'agisse de la sortie dans le contrôleur ou de la vue. . J'ai donc changé le suffixe .md
en .txt
et le résultat était toujours false
.
Comment le résoudre ?
Supplément :
Merci pour votre aide. Grâce à la méthode de @jiny, le problème a été résolu.
Pour une raison quelconque, je l'imprime dans IndexController.class.php
var_dump(__ROOT__);
var_dump(__PUBLIC__);
(Ce qui précède est la valeur par défaut, je ne l'ai pas configuré.)
sortie :
string(0) ""
string(10) "__PUBLIC__" // si 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
Tout d'abord, vous devez comprendre quel est le chemin correspondant lorsque PHP
exécute la méthode Xaction
? Le fichier d'entrée dans ThinkPHP
sert de point d'entrée, ce qui signifie que l'exécution de la méthode est effectivement terminée dans ce fichier (divers require
), donc le chemin où se trouve la méthode d'exécution de Xaction
est le répertoire où se trouve index.php
PHP
执行 Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种 require
),所以执行 Xaction
的方法所在路径即为 index.php
所在的目录
建议使用相对路径
既然知道当前脚本的所在路径,那么要获取 Public
Public
🎜
$file = './Public/blog-frontend/Home/xxx.md'
🎜
🎜迷茫2017-05-16 13:11:39
Par défaut __PUBLIC__
Vous pouvez l'imprimer et voir.
Je ne pense pas que la façon dont vous avez testé soit correcte. Ne vous précipitez pas pour prouver votre idée de plusieurs manières. Organisez une méthode et procédez étape par étape.
某草草2017-05-16 13:11:39
Lorsque vous utilisez fopen, vérifiez si le fichier répertoire est configuré avec les autorisations correspondantes. Cela peut être la raison.
天蓬老师2017-05-16 13:11:39
Merci pour l'invitation, tp fournit la constante système _PUBLIC_, qui peut être directement référencée en définissant le chemin sous config