ディレクトリ構造:
プロジェクト
|---アプリ
|---パブリック
|---ブログフロントエンド
|---ホーム
|---js
|---CSS
|---画像
|---xxx.md
|---ThinkPHP
|---index.php
エントリ ファイル index.php
の内容は次のとおりです。
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// デバッグ モードをオンにします。開発段階でオンにするか、デプロイメント段階で false に設定することをお勧めします。
定義('APP_DEBUG',true);
//アプリケーションディレクトリを定義
定義('APP_PATH','./App/');
//ThinkPHPエントリーファイルを導入
'./ThinkPHP/ThinkPHP.php' が必要です。
// 親愛なる ^_^ 後はコードは必要ありません。とても簡単です。
パブリック config.php
で設定されています
'TMPL_PARSE_STRING' =>
'__STATIC__' => __ROOT__ ./Public/blog-frontend',
)、
ビューで Public
を使用してリソースを使用します: 静的リソースを導入します
<script src="__STATIC__/Home/js/jquery.min.js"></script>
上記のコードには問題はなく、正常に導入されました。
ただし、コントローラ内では
関数 Xaction(){
$file = "/Public/blog-frontend/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
}
出力
false
奇妙なことに、ビューで fopen をもう一度試してみました
$file = "__STATIC__/Home/xxx.md";
$fopen = fopen($file,'r');
var_dump($fopen);
出力
false
fopen
を再試行し、それを file_get_contents
に置き換えました。結果は、コントローラーの出力であってもビューの出力であっても、依然として false
でした。 。そこで、サフィックス .md
を .txt
に変更しましたが、結果は依然として false
でした。
どうすれば解決できますか?
補足:
@jinyさんの方法で問題は解決しました。
何らかの理由で、IndexController.class.php に出力します
var_dump(__ROOT__);
var_dump(__PUBLIC__);
(上記はデフォルトです。設定していません。)
出力:
string(0) ""
string(10) "__PUBLIC__" // if var_dump(__ABCDE__);// string(9) "__ABCDE__"
習慣沉默2017-05-16 13:11:39
まず、PHP
执行 Xaction
这个方法的时候对应的路径是什么?ThinkPHP
中的入口文件担当着入口的作用,意味着方法的执行实际上都是在这一文件中去完成的(各种 require
),所以执行 Xaction
的方法所在路径即为 index.php
が配置されているディレクトリを理解する必要があります
相対パスを使用することをお勧めします
現在のスクリプトのパスがわかったので、Public
迷茫2017-05-16 13:11:39
デフォルト__PUBLIC__
印刷して確認できます。
あなたのテスト方法が正しいとは思えません。自分のアイデアを証明するために、急いで複数の方法を使用しないでください。
某草草2017-05-16 13:11:39
fopen を使用する場合は、ディレクトリ ファイルに対応するアクセス許可が設定されているかどうかを確認してください。これが原因である可能性があります。