【发布时间】:2014-08-02 13:48:21
【问题描述】:
我的问题很简单,我想我在路径的某处误用了斜线。
我想读取一个本地文件,文件的路径存储在由 phpMyAdmin 管理的数据库中。我用来读取文件的代码如下:
<?php
$f = fopen($row['Article'], "r");
while(!feof($f)){
echo fgets($f) . "<br/>";
}
fclose($f);
?>
原来我存储在数据库中的路径是:C:\wamp\www\project\database\article\article1.txt
而且效果很好。这里的问题是,我使用的是 WAMP 服务器,这意味着我不必存储文件的绝对路径,所以我会像这样将路径存储到我的数据库中:
\project\database\article\article1.txt
但它根本不起作用!它显示的错误是“fopen 无法打开流”。
这个错误意味着php代码无法读取我存储在DB中的路径。于是我尝试了几种方法,比如:
\localhost\project\database\article\article1.txt
/project/database/article/article1.txt
/localhost/project/database/article/article1.txt
但它们都不起作用。显示相同的错误!
有人可以给我一些提示以使其正常工作吗?谢谢!!
【问题讨论】:
-
你检查过文本文件是否存在吗?我知道这很愚蠢,但有时就这么简单。
/project/database/article/article1.txt似乎是正确的路径 -
好吧,我尝试了路径
C:\wamp\www\project\database\article\article1.txt,php 代码显示article1.txt。但是当我尝试路径/project/database/article/article1.txt时它不显示 -
你试过
/wamp/www/project/database/article/article1.txt和/www/project/database/article/article1.txt吗? -
AFAIK 您不能使用前导斜杠作为 Windows 绝对路径。您必须从驱动器号开始绝对路径 (C:\..)。如果您希望您的代码可移植到另一台服务器,我建议存储来自 Web 根目录的相对路径(如 /project/database/article/article1.txt),然后当您尝试 fopen 时,使用 PHP 常量或函数告诉它在哪里看(例如
fopen($path_to_webroot . $relative_path_to_file)。看$_SERVER['DOCUMENT_ROOT']、real_path()、__FILE__等stackoverflow.com/questions/1954992/…