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: 引用:
你说“同一个文件的三种方法我都试过” 可是亲我没有看到你的电脑 我不知道你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 /> 出现的问题是: 第一种和第三种路径方式无法将$str表示的字符串写入menu.json文件中,文件是空的。但是第二种路径可以写入文件。问题就是这样。
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
*/
所以//第三种
$file=JS_URL.'menu.json';
即 $file=http://myblog.com/Application/Admin/View/Menu/menu.json
这样的值当然不等同文件本来的路径
//第二种路径
$file="D:/myphp/Apache/htdocs/myblog/Application/Admin/View/Menu/menu.json"
难道你认为上面两个会相等??!!http://myblog.com/怎么可能会等于D:/myphp/Apache/htdocs/myblog 。即便你在apache的配置文件中配置了该http://myblog.com/的跟目录是D:/myphp/Apache/htdocs/myblog。但是亲 那是在URL的解析里 你这是服务器后台 。不是一个概念。你混淆了。
所以正确应该这么写
$file="../View/Menu/menu.json";
//第二种路径
$file="D:/myphp/Apache/htdocs/myblog/Application/Admin/View/Menu/menu.json"
//第三种
$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路径写入。
需要是相对或绝对路径写入才可以。
首先你需要定义常量指定到根目录。
然后再加上路径。
例如:在当前目录写入一个文件
$file = dirname(__FILE__).'/abc.json';
$fp=fopen($file,'w');
fwrite($fp,$str);
fclose($fp);
?>
你echo dirname(__FILE__)就知道当前目录是什么了。