file_get_contents()

hahaliu005 2011-04-16 04:42:37
这是index.php

<?php
$file = './test.php';
$content = file_get_contents($file);
echo $content;

然后test.php中就一句话:this is a test
这两个文件位于同一级目录,我在浏览器中运行时,'this is a test'这句话会被正常打出来,而用命令行运行时却出现了警告,也没有输出'this is a test'.
错误如下:
C:\Users\hahaliu>php G:\www\index.php
PHP Warning: file_get_contents(test.php): failed to open stream: No such file
or directory in G:\www\index.php on line 3

Warning: file_get_contents(test.php): failed to open stream: No such file or di
rectory in G:\www\index.php on line 3
然后我将$file改为了绝对路径
$file = 'G:/www/test.php';
命令行下就能输出'this is a test',为什么用相对路径在命令行下就出错了?我很困惑,是什么没有设置对吗?

...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hahaliu005 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hnxxwyq 的回复:]
引用 2 楼 hahaliu005 的回复:

哦,原来是这样啊,那我要在命令行运行带有相对路径的代码该怎么办呢,只有CD到对应路径去吗?


让你看include_path这个意思,就是你可以在你php.ini中指定你所要运行相对的根目录!

另外就是在代码中定义一个运行的root路径,所以include/require都基于这个root来;

例如:


PHP cod……
[/Quote]
是呀,我想的是当用'./test.php'的时候,他就应该自动找到与源文件同级的test.php文件了,而用'test.php',也是先在同级目录中找,没有才在include_path中找的
lazyboy_wu 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hahaliu005 的回复:]

哦,原来是这样啊,那我要在命令行运行带有相对路径的代码该怎么办呢,只有CD到对应路径去吗?
[/Quote]

让你看include_path这个意思,就是你可以在你php.ini中指定你所要运行相对的根目录!

另外就是在代码中定义一个运行的root路径,所以include/require都基于这个root来;

例如:

define('ROOT', dirname(__FILE__));
$file = ROOT . './test.php';
$content = file_get_contents($file);
echo $content;


kaifadi 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hahaliu005 的回复:]

快使用双截棍,,哼哼哈顶
[/Quote]
原来你也是周哥的偶像啊。哈哈!
hahaliu005 2011-04-16
  • 打赏
  • 举报
回复
快使用双截棍,,哼哼哈顶
hahaliu005 2011-04-16
  • 打赏
  • 举报
回复
哦,原来是这样啊,那我要在命令行运行带有相对路径的代码该怎么办呢,只有CD到对应路径去吗?
lazyboy_wu 2011-04-16
  • 打赏
  • 举报
回复
在不考虑php.ini中include_path的指定的情况下:

通过浏览器浏览,也就是作为web server浏览的情况下,文件运行的目录是基于web server配置的

而通过命令行,则是基于系统环境path的

可以通过下面2个输出看出不一样


echo getcwd();

echo ini_get('include_path');


4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧