警告:文件(Book 1.csv 1):无法打开流:第2行的C:\ xampp \ htdocs \ Untitled-2.php中没有此类文件或目录
警告:在第3行的C:\ xampp \ htdocs \ Untitled-2.php中为foreach()提供的参数无效
为什么我会收到这些错误?我的代码是以下脚本:
<?php
$read = file("Book 1.csv 1");
foreach($read as $line){
echo $line .",";
}
?>
答案 0 :(得分:1)
我假设您的文件名为Book 1.csv
,因为它更有意义。您的代码可能有拼写错误,因为文件来源目前为Book 1.csv 1
,这可能是您遇到问题的原因。
试试这个:
$read = file("Book 1.csv");
答案 1 :(得分:1)
所以,我认为你有相对和绝对路径的问题。
file("foo.bar")
会尝试将文件foo.bar
relative 打开到当前路径。如果您从命令行运行php脚本,它将尝试在您运行php时所在的目录中打开该文件。
因此,如果您有以下目录结构:
/foo/
/foo/test.php
/foo/bar.csv
/bar.txt
你正在从你的根目录运行php:
/ $ php /foo/test.php
您的文件的工作目录将是/
,即使php文件本身位于/foo
。所以,如果你这样做
file('bar.csv');
实际上{php}将尝试打开的内容/bar.csv
并不存在。
请注意,脚本的相对工作目录可能与脚本的运行方式有很大不同。如果它从 php-fpm 模式运行,则取决于您的配置。
要测试当前的工作目录,请执行
echo getcwd();
然后您可以使用
列出工作目录的内容$files = glob(getcwd() . DIRECTORY_SEPARATOR, GLOB_NOSORT);
var_dump($files);
或者您可以使用readdir
执行类似的操作总而言之,我认为你应该尽量避免使用相对文件路径,因为它可以解决各种各样的问题。如果可能,请尝试使用绝对路径,例如:
file('/var/www/file.csv');