【问题标题】:Reading txt file on network with php用php读取网络上的txt文件
【发布时间】:2020-09-24 11:23:36
【问题描述】:

我需要用PHP读取和解析网络上的txt文件。

“警告:file_get_contents(file//10.0.2.129/lims/lims.txt): 失败 打开流:中没有这样的文件或目录 C:\AppServ\www\mail\index.php 在第 2 行"

这样我会收到错误消息。

<?php
$txt_file = file_get_contents('file//10.0.2.129/lims/lims.txt');

function sp($x) {
    return preg_split("/\s\s+|\s*\((\d{4}).*\)/", $x,0,PREG_SPLIT_DELIM_CAPTURE);
}

$array = preg_split("/\n/", $txt_file);
$processed = array_map('sp', $array);

print_r(json_encode($processed));
?>

【问题讨论】:

  • file// 不是有效协议
  • 那我该怎么办
  • 首先,使用有效的协议
  • 你少了一个冒号:试试 file:// 请参阅php.net/manual/en/wrappers.php 了解有效协议

标签: php file-get-contents txt


【解决方案1】:

试试这个

\\\\10.0.2.129\\lims\\lims.txt

【讨论】:

  • 警告:file_get_contents(\\10.0.2.129\lims\lims.txt):无法打开流:第 2 行 C:\AppServ\www\mail\index.php 中的权限被拒绝跨度>
  • 我认为您需要先允许权限
  • 我不知道怎么放
【解决方案2】:

file_get_contents 可用于本地文件或通过协议(此处列出:https://www.php.net/manual/wrappers.php

在您的示例中,您错过了“文件”和“//”之间的“:”。而且,根据 IP 查找,您的文件位于共享磁盘上,因此您必须在前面添加网络前缀 \\

所以应该是file_get_contents('file://\\\\10.0.2.129/lims/lims.txt')。 由于“file://”是默认协议,你可以删除它,只保留file_get_contents('\\\\10.0.2.129/lims/lims.txt')

【讨论】:

  • 我们可以用别的东西代替 file_get_contents 吗?
  • 读取文件?是的,看看 fopen、fread 和 fclose 组合:php.net/manual/fr/function.fread.php,第一个示例
【解决方案3】:

尝试使用 file_get_contents('./lims/lims.txt'); 但请确保根据您调用此函数的位置选择正确的路径。

【讨论】:

  • 问题是关于从网络读取文件,而不是从与脚本相同的目录中读取
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
相关资源
最近更新 更多