2015-06-26 6 views
-2

У меня проблемы, я не понимаю, почему эта ошибка происходит.Предупреждение, fopen, feof и fgetcsv

Так что, когда я только запустить этот код,

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; 
} 

Он работает и возвращает массив. Но когда я вызвать функцию таким образом,

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

+0

Где ' Projetos.csv'? Я имею в виду путь. Ans также путь к скрипту. –

+0

TSread.php (файл php, содержащий getClientProject) и Projetos.csv находятся в одной папке – user3161343

+0

Пути файлов относятся к основному файлу PHP, а не к файлу, содержащему 'fopen' и т. Д. См. Http: // stackoverflow. ком/вопросы/7378814/ARE-PHP-Include-пути-относительные-к-файлу-или-на-вызывающему-кода – Eborbob

ответ

1

Вы открываете файл, используя относительный путь. Вы предполагаете, что Projetos.csv всегда находится в том же каталоге, что и файл TSread.php. Хотя при включении его вы, кажется, находитесь в более высоком каталоге (вне каталога файлов CRM), поэтому PHP больше не может найти ваш CSV-файл, так как он пытается открыть его по отношению к верхнему каталогу.

Чтобы избежать этого, вы можете пройти полный путь к вашему методу getClientProject. Таким образом, вы получите что-то вроде:

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

Очевидно, что вам нужно будет изменить вашу функцию немного работать с этим новым конструктором, поэтому он хотел бы что-то вроде этого:

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

 Смежные вопросы

  • Нет связанных вопросов^_^