fopen с динамическим именем файла не работает - PullRequest
0 голосов
/ 14 ноября 2011

Мне нужно создать веб-сайт, на котором люди могли бы загружать файлы данных, которые после некоторой обработки будут отображаться с помощью jpgraph. Файл анализируется с помощью bash-скрипта с именем analfile.sh. Сценарий bash выглядит так:

#!/bin/bash

file=$1
fecha=`date +%s`
mv $1 $fecha.dat
echo $fecha.dat

Итак, он возвращает другой файл с именем, похожим на: 1321290921.dat. Это файл, который мне нужно построить.

Это мой текущий php код:

$target_path = "/home/myhome";
$target_path = $target_path . basename( $_FILES['rdata']['name']); 
$target_file = basename( $_FILES['rdata']['name']); 

if(move_uploaded_file($_FILES['rdata']['tmp_name'], $target_path)) {   
    echo "The file ".  $target_file. " has been uploaded";    
    chdir('/home/myhome');    
    $filetoplot=shell_exec('./analfile.sh'.' '.$target_file);    
} else{    
    echo "There was an error uploading the file, please <a href=\"index.html\">try again!
</a>";
}

//$filetoplot="1321290921.dat"  
echo "<br>The file to be opened is ".  $filetoplot. "<br>";

if ($file_handle = fopen("$filetoplot", 'r')) {     
  while ( $line_of_text = fgets($file_handle) ) {  
    $parts = explode('.', $line_of_text);
    echo $line_of_text ;
    print $parts[0] . $parts[1]. $parts[2]. "<br>";   
  }   
fclose($file_handle);    
}

У меня есть разрешения на чтение и запись в целевой каталог. Я нахожу странным, что если я раскомментирую строку $ filetoplot = "1321290921.dat", сценарий будет работать отлично. Я предполагаю, что делаю что-то глупое, так как это мой первый код в php, но после нескольких часов поиска в Google я не смог найти решение.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 16 ноября 2011

Первое, что я вижу, это то, что вы не добавляете косую черту (/) к своему домашнему пути, поэтому путь будет выглядеть как /home/myhomefoo, а не /home/myhome/foo.

Вы также должны переместиться на $target_file раньше и использовать это в течение $target_path.Нет смысла делать одно и то же дважды.

Если это не поможет, посмотрим, что будет дальше.

...