如何解决PHP / Perl文件大小功能在新服务器上不起作用
| 我的功能无法正常运行,因为我将站点从共享主机移到了VPS(两个操作系统都具有相同的Linux OS,PHP版本5.2.9和Perl版本5.8.8),我遇到了问题。 当我的脚本将远程文件存储到本地目录时,我使用XMLHttpRequest以固定的间隔(5秒)运行一个简单的PHP脚本,该PHP脚本执行一个Perl脚本,该脚本返回当前文件的大小(已下载的字节数)。 这是PHP代码:<?PHP
if (isset($_GET[\'file\'])) {
clearstatcache();
$file = $_GET[\'file\'];
exec(\"/usr/bin/perl /home/xxxxxx/public_html/cgi-bin/filesize.pl $file\",$output);
//print_r($output);
if (!empty($output) || $output[0] != \"\") {
$currentSize = $output[0];
file_put_contents(\'progress.txt\',$currentSize);
} else {
...
...
}
}
?>
这是Perl代码
#!/usr/bin/perl
$filename = $ARGV[0];
$filepath = \'/home/xxxxxx/public_html/tmp_dir/\'.$filename.\'.flv\';
$filesize = -s $filepath;
print $filesize;
当我在共享服务器上运行这些脚本时,我没有问题,可以看到下载进度,但是现在,只有在完全下载了远程文件并且看不到进度时才打印文件大小。
我想我需要更改PHP设置中的某些内容,但我不确定,我也不知道需要更改什么。
好的,对不起/愚蠢,filesize()函数可以正常工作,谢谢大家。
解决方法
如果需要文件大小,也可以从PHP调用the2ѭ函数,而不必完全使用perl。
,该问题可能是由其他文件位置引起的。您确定文件“ 3”存在吗?您可以使用以下方法进行测试:
if (-e \'/home/xxxxxx/public_html/tmp_dir/\'.$filename.\'.flv\')
请记住,您可以改用PHPfilesize()
:
<?php
if (isset($_GET[\'file\'])) {
clearstatcache();
$file = $_GET[\'file\'];
if (file_exists(\"/home/xxxxxx/public_html/tmp_dir/$file.flv\") {
$currentSize = filesize(\"/home/xxxxxx/public_html/tmp_dir/$file.flv\");
file_put_contents(\'progress.txt\',$currentSize);
} else {
...
...
}
}
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。