我正在使用cURL请求从FTP服务器下载CSV文件。
我已将文件下载到我的webroot文件夹中(在我的指定路径中)。
但是当我尝试从文件中读取CSV数据时,它没有显示任何内容。
$leadDir
是我下载文件的路径。
if ($fp = fopen($leadDir, "r")) {
echo $fp;
echo "come after fopen";
while ($CSVData = fgetcsv($fp)) {
echo "</br>";
echo "come after fgetcsv";
}
}
它不会进入while
循环。
我还检查了文件权限,我已经授予了777权限。
哪里出错?
答案 0 :(得分:2)
代码应该没问题,所以我最好的答案是路径不正确,尝试类似
$cwd = getcwd();
$leadDir = $cwd.'/relativePathToFile';
if(file_exists($leadDir)){
if (($fp = fopen($leadDir, "r"))) {
echo $fp;
echo "come after fopen";
while ($CSVData = fgetcsv($fp)) {
echo "</br>";echo "come after fgetcsv";
}
}
}
答案 1 :(得分:1)
您的代码看起来应该可以正常工作。这是我将使用的代码:
<?php
if($handle = fopen('test.csv', 'r')) {
$data = fgetcsv($handle);
if($data) {
echo '<pre>';
var_dump($data);
echo '</pre>';
}
}
?>
尝试执行此代码:
var_dump(file_exists($leadDir));
如果文件存在,则输出
bool(true)
否则会输出
bool(false)
此外,$leadDir
是目录还是文件?
答案 2 :(得分:1)
如果提供了无效句柄,则fgetcsv()返回NULL;对于其他错误,包括文件结尾,则返回FALSE。
尝试:
if (($fp = fopen($leadDir, "r")) !== FALSE) {
echo $fp;
echo "come after fopen";
while (($CSVData = fgetcsv($fp,1000,',')) !== FALSE) {
echo "</br>";
echo "come after fgetcsv";
}
}
如果仍未输入while循环,请尝试检查CSV文件的结尾。
注意:如果在读取Macintosh计算机上或由Macintosh计算机创建的文件时PHP无法正确识别行结尾,则启用auto_detect_line_endings运行时配置选项可能有助于解决问题。 (来源PHP.net)
答案 3 :(得分:0)
检查目标目录的所有者。尝试向www-data
用户授予权限。
您可以使用chown
function对下载的文件以编程方式执行此操作。
这是语法。
bool chown ( string $filename , mixed $user )