fopen与动态文件名不起作用

时间:2011-11-14 17:54:43

标签: bash fopen sh

我需要创建一个人们可以上传数据文件的网站,在使用jpgraph绘制一些处理后。使用名为analfile.sh的bash脚本分析该文件。 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中的第一个代码,但是经过几个小时的谷歌搜索我无法找到解决方案。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我看到的第一件事是你没有在你的主路径上添加尾部斜杠(/),因此路径就像/home/myhomefoo而不是/home/myhome/foo

您还应该提前移动$target_file,并在$target_path内重复使用。没有理由两次做同样的事情。

如果这没有帮助,我们会看到接下来会发生什么。