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__"
Tout d'abord, vous devez comprendre quel est le chemin correspondant lorsque
PHP
exécute la méthodeXaction
? Le fichier d'entrée dansThinkPHP
sert de point d'entrée, ce qui signifie que l'exécution de la méthode est effectivement terminée dans ce fichier (diversrequire
), donc le chemin où se trouve la méthode d'exécution deXaction
est le répertoire où se trouveindex.php
PHP
执行Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种require
),所以执行Xaction
的方法所在路径即为index.php
所在的目录建议使用相对路径
既然知道当前脚本的所在路径,那么要获取
Public
Maintenant que vous connaissez le chemin du script actuel, il est très clair d'obtenir les fichiers ressources sous
Public
🎜 🎜 🎜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.
Lorsque vous utilisez fopen, vérifiez si le fichier répertoire est configuré avec les autorisations correspondantes. Cela peut être la raison.
Merci pour l'invitation ! Utilisez
TP
的系统常量__PUBLIC__
CitationMerci 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