通过 exec() 将 DirectoryIterator 的实例传递给另一个脚本未按预期工作
Passing an instance of DirectoryIterator to another script via exec() is not working as expected
我有一个页面正在为目录中的每个文件执行脚本:
$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
我希望脚本的每次迭代都能回显文件名,但我却收到了错误。
我错过了什么,我怎样才能让它正确处理文件?
由于您将字符串中的 $fileinfo
传递给其他脚本,因此不再调用 DirectoryIterator
, because the magic method __toString()
的实例,后者会将其转换为文件名本身。所以你不需要也不能使用isDot()
或getFilename()
,只需要像这样做一个简单的if语句:
$fileinfo = $argv[1];
if ($fileinfo != "." && $fileinfo != "..") {
print_r($fileinfo) . PHP_EOL ;
$fileName = $fileinfo;
echo $fileName;
}
我有一个页面正在为目录中的每个文件执行脚本:
$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
我希望脚本的每次迭代都能回显文件名,但我却收到了错误。
我错过了什么,我怎样才能让它正确处理文件?
由于您将字符串中的 $fileinfo
传递给其他脚本,因此不再调用 DirectoryIterator
, because the magic method __toString()
的实例,后者会将其转换为文件名本身。所以你不需要也不能使用isDot()
或getFilename()
,只需要像这样做一个简单的if语句:
$fileinfo = $argv[1];
if ($fileinfo != "." && $fileinfo != "..") {
print_r($fileinfo) . PHP_EOL ;
$fileName = $fileinfo;
echo $fileName;
}