phpのfopenのパス問題
初心者です
thinkPHPを使用する際、fopen関数を使ってデータを書き込みたいのですが、以下のような問題が発生します
$file="./menu.json";//这种不行,①<br /> //$file=JS_URL.'menu.json';这种也不行②<br /> //$file="C:/Users/Administrator/Desktop/qq.php";但是这种却可以成功写入数据③<br /> $fp=fopen($file,'w');<br /> fwrite($fp,$str);<br /> fclose($fp);
JS_URLは次のとおりです以下に続きます
define("SITE_URL","http://myblog.com/");<br />define("CSS_URL",SITE_URL."Public/css/");<br />define("IMG_URL",SITE_URL."Public/images/");<br />define("JS_URL",SITE_URL."Public/js/");
-----ソリューションのアイデア----------------------
define("SITE_URL","http://myblog.com/");//このステートメントは SITE_URL=http://myblog.com/
define(" と同等ですJS_URL ",SITE_URL."Application/Admin/View/Menu/menu.json");
/*このステートメントは JS_URL=SITE_URL."Application/Admin/View/Menu/menu.json"
と同等です。これは、JS_URL=http://myblog.com/Application/Admin/View/Menu/menu.json
*/
と同等なので、 //3 番目のタイプ
$file=JS_URL.'menu。 json' ;
つまり、$file=http://myblog.com/Application/Admin/View/Menu/menu.json
そのような値は、もちろんファイルの元のパスと等価ではありません
//2 番目のパス
$file="D:/myphp/Apache/htdocs/myblog/Application/Admin/View/Menu/menu.json"
上記 2 つは等しいと思いますか? ? ! !なぜ http://myblog.com/ が D:/myphp/Apache/htdocs/myblog と等しくなるのでしょうか。 Apache 設定ファイルで http://myblog.com/ のディレクトリを設定しても、D:/myphp/Apache/htdocs/myblog となります。しかし、それは URL の解析であり、あなたはサーバーのバックグラウンドです。概念ではありません。あなたは混乱しています。
正しく記述する必要があります
$file="../View/Menu/menu.json";
//2 番目のパス
$file="D:/myphp /Apache/htdocs/myblog/Application/Admin/View/Menu/menu.json"
//3 番目のタイプ
$file=JS_URL.'menu.json';
$fp=fopen($ file,'w');
fwrite($fp,$str);
fclose($fp);
//JS_URL は次のとおりです
define("SITE_URL","D: /myphp/Apache/htdocs/myblog");
define("JS_URL",SITE_URL."Application/Admin/View/Menu/menu.json");
//-- - -----------私が境界線です
あなたが言及した最初の方法に関しては、$file="../View/Menu/menu.json"; は現在のディレクトリ View を意味します。ルートディレクトリの/Menu/menu.json。しかし、あなたの php がどのパスにあるのかわかりません (どうやって知ることができるのか教えてくれませんでした!!)
------解決策のアイデア - ---------------------もちろんこれは機能しません。http パスを使用して書き込みます。
相対パスまたは絶対パスを記述する必要があります。
まず、ルート ディレクトリに割り当てる定数を定義する必要があります。
次にパスを追加します。
例: 現在のディレクトリにファイルを書き込みます
ef225d6c62e878c34ba352717033bed0
現在のディレクトリが何であるかは、echo dirname(__FILE__) でわかります。 )。