2015-05-06 45 views
4

我有正在執行的腳本在目錄中的每個文件的頁面:通過EXEC傳遞DirectoryIterator的一個實例到另一個腳本()不按預期工作

$dir = new DirectoryIterator('/var/www/OCR3/upload_pending/'); 

foreach ($dir as $fileinfo) { 
    exec("php manual_doc_proccessor.php $fileinfo"); 
    echo "php manual_doc_proccessor.php $fileinfo" . " Sent for proccessing <BR>"; 
} 

將這個腳本:

腳本運行
$fileinfo = $argv[1]; 
if (!$fileinfo->isDot()) { 
    print_r($fileinfo->getFilename()) . PHP_EOL ; 
    $fileName = $fileinfo->getFilename(); 
    echo $fileName; 
} 

然而,當我得到的錯誤:

Call to a member function isDot() on a non-object

我期待每一次迭代的腳本來回顯文件名,但相反,我得到的錯誤。

我錯過了什麼,如何才能正確處理文件?

回答

2

既然你在一個串到另一個腳本通過$fileinfo它不再DirectoryIterator一個實例,因爲魔術方法__toString()被調用時,將它轉換爲文件名本身。所以,你不需要和不能使用isDot()getFilename(),只是做一個簡單的if語句是這樣的:

$fileinfo = $argv[1]; 
if ($fileinfo != "." && $fileinfo != "..") { 
    print_r($fileinfo) . PHP_EOL ; 
    $fileName = $fileinfo; 
    echo $fileName; 
} 
+0

謝謝。這讓我朝着正確的方向前進。 –

+0

@JoelLewis不客氣! – Rizier123

相關問題