ホームページ  >  記事  >  バックエンド開発  >  PHPのfopenのパスに関連する問題

PHPのfopenのパスに関連する問題

WBOY
WBOYオリジナル
2016-06-13 12:27:061929ブラウズ

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/");

-----ソリューションのアイデア----------------------

Quote:
Quote: Quote:

あなたは「同じファイルに対して 3 つの方法をすべて試しました」と言いましたが、親愛なる私はあなたのコンピュータでは、menu.json ファイルの絶対パスも、php ファイルの絶対パスもわかりません。あなたはそれを明らかに知っていますが、あなたがそれを投稿しなければ、私も知りません。道が分からないので、どこで間違ったのかはっきりとは言えません。 。 。 。 。 。

同じファイルを使用します。menu.json ファイル
コードは次のとおりです。
$file="../View/Menu/menu.json";<br />	//第二种路径<br />	$file="D:/myphp/Apache/htdocs/myblog/Application/Admin/View/Menu/menu.json"<br />	//第三种<br />	$file=JS_URL.'menu.json';<br />	$fp=fopen($file,'w');<br />	fwrite($fp,$str);<br />	fclose($fp);<br />	//JS_URL是下面这个<br />	define("SITE_URL","http://myblog.com/");<br />    define("JS_URL",SITE_URL."Application/Admin/View/Menu/menu.json");<br />	

問題は次のとおりです。
最初と 3 番目path メソッドは $str で表される文字列を menu.json ファイルに書き込むことができず、ファイルは空です。ただし、2 番目のパスではファイルを書き込むことができます。それが問題なのです。

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__) でわかります。 )。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。