带有 fopen、feof 和 fgetcsv 的警告

Warning with, fopen, feof and fgetcsv

提问人:user3161343 提问时间:6/26/2015 最后编辑:user3161343 更新时间:6/26/2015 访问量:568

问:

我有麻烦了,我不明白为什么会发生这个错误。

所以当我只运行这段代码时,

function getClientProject($cliente)
{
    $file = fopen("Projetos.csv","r");
    $ArrayCount = 0;
    $bool = false;
    while(! feof($file))
    {
        $data = fgetcsv($file);
        if($data[0] != '')
        {
            if(substr_compare($data[0],$cliente, 0, 3) == 0)
            {
                if($ArrayCount > 0)
                {
                    $total = count($OpenProject);
                    for($i=0;$i<$total;$i++)
                    {
                        if($OpenProject[$i] == $data[0])
                            $bool = true;
                    }
                    if($bool == false)
                    {
                        $OpenProject[$ArrayCount] = $data[0];
                        $ArrayCount++;
                    }
                }else
                {
                    $OpenProject[$ArrayCount] = $data[0];
                    $ArrayCount++;
                }   
            }
        }
    }
    fclose($file);
    return $OpenProject;
}

它工作并返回 Array。但是当我以这种方式调用函数时,

include_once 'CRM files/TSread.php';
$arrayC = getClientProject('SLA');

var_dump($arrayC);

不再有效,我这些错误,

enter image description here

我做错了什么?

路径,我使用的文件是“Projeto.php”:

enter image description here

和我的CRM文件文件夹:enter image description here

php csv fopen fgetcsv feof

评论

0赞 Sougata Bose 6/26/2015
在哪里?我的意思是路径。还有脚本路径。Projetos.csv
0赞 user3161343 6/26/2015
TSread.php(包含 getClientProject 的 php 文件)和 Projetos.csv位于同一文件夹中
0赞 Eborbob 6/26/2015
文件路径是相对于主 PHP 文件的,而不是相对于包含 etc 的文件。查看 stackoverflow.com/questions/7378814/...fopen

答:

1赞 Oldskool 6/26/2015 #1

您正在使用相对路径打开文件。您假定它始终与文件位于同一目录中。虽然,在包含它时,您似乎在更高的目录中(在CRM文件目录之外),因此PHP无法再找到您的CSV文件,因为它现在正在尝试相对于上层目录打开它。Projetos.csvTSread.php

您可以将完整路径传递给您的方法以避免这种情况。因此,您会得到如下内容:getClientProject

$arrayC = getClientProject('SLA', __DIR__ . '/CRM files/Projectos.csv');

显然,你需要稍微改变你的函数才能使用这个新的构造函数,所以它应该像这样:

function getClientProject($cliente, $csv) {
    $file = fopen($csv, "r");
    // Followed by the rest of your function