【问题标题】:PHP Process Won't Overwrite With FwritePHP 进程不会被 Fwrite 覆盖
【发布时间】:2013-04-27 11:48:07
【问题描述】:

我有问题。我已经在我的 PC 上使用 localhost 进行了尝试,并且检查了我能想到的每一种可能性,但问题仍然存在。所以这里是:

当我点击“装备”链接时,它会链接到一个 .php 文件。

在那个文件中,它说:

<?

$user = username
$character = charactername

$itemtxt = "http://www.intooblivion.neq3.com/$user/$character/stats/inventory/armoury/".$item."_equipped.txt";
$itemfh = fopen($itemtxt, "w");
fwrite($itemfh, "i");
fclose($itemfh);

?>

问题是,它实际上并没有这样做。在完成该过程后,我正在检查文件,但实际上并没有按照它的说明进行操作。它保留了我要求它修改的所有文件,我不知道为什么。

编辑:如果我尝试使用 $_SERVER['DOCUMENT_ROOT'] 的整个路径只会给我这个错误:

fopen(/home/u542847060/public_html/StealthParanoia/Aetyr/stats/inventory/armoury/ironsword_equipped.txt): failed to open stream: No such file or directory

这很愚蠢,因为那是文件的确切目录。

已修复:我的 derping 非常用力。我的朋友 (Haden693) 帮助我意识到,因为“.txt”与“.php”在同一个位置,所以我不需要首先指定路径。哎呀。

感谢你们的帮助,伙计们,爱你们。

【问题讨论】:

  • 您无法写入 (http-)url。写入文件系统上的相对或绝对路径。
  • 哦。我怎么做? (我一直不擅长路径)。

标签: php fwrite


【解决方案1】:

你不能修改外部文件。

如果文件在本地,用绝对路径打开。

+ abc.php
|
+ db/
|
+── + abc.txt

abc.php

fopen("db/abc.txt", "w");

服务器(目标)

temp.txt

内容

修改.php

<?php
    $f = fopen("temp.txt", "w");
    fwrite($f, $_GET["m"]);
    fclose($f);
?>

B 服务器 (HTML)

prompt.html

<html>
    <head></head>
    <body>
        <form action="http://**SERVER-A**/modify.php" method="get">
            <input type="text" name="m">
            <input type="submit">
        </form>
   </body>
</html>

现在,您只需在输入框中输入修改词,然后提交!

如果你想要链接,如下:

<html>
    <head></head>
    <body>
        <a href="http://**SERVER-A**/modify.php?m=**word**">Equip</a>
    </body>
</html>

【讨论】:

  • 当我提到本地磁盘时,我的意思是当我在本地使用它时它可以工作。我尝试修改的所有内容都是在线的,并且我习惯使用绝对路径,从域名到结尾。
  • 在线修改文件是绝对不可能的。如果您想这样做,请使用本地修改创建另一个 .php 文件。然后你远程调用那个 .php 文件。
  • 对不起,我不知道我在看什么。这如何写入现有文件,我什至可以用它做什么?这个想法是我单击一个链接,PHP 写入一个现有文件,我不能对表单做任何事情。不过还是谢谢
  • A Server 表示远程,B Server 是您的 html。 Modify.phptemp.txt 必须在一起,prompt.html 不是。
【解决方案2】:
<?

$user = username
$character = charactername

$itemtxt = $item."_equipped.txt";
$itemfh = fopen($itemtxt, "w");
fwrite($itemfh, "i");
fclose($itemfh);

?>

【讨论】:

    【解决方案3】:

    首先检查您的文件权限...

    您的文件权限必须是 775 或 777 ...

    如果没有适当的文件权限,您将无法编辑文件。

    【讨论】:

    • @JordanElliotFinch 是您的本地文件吗..?
    • 我尝试使用的所有文件都在线,而不是在我的本地磁盘上。
    • 我已经尝试过了,它声称该文件不存在:“fopen(/StealthParanoia/Aetyr/stats/inventory/armoury/ironsword_equipped.txt):无法打开流:没有这样的文件或目录”但它肯定存在,因为我在 FTP XD 中查看它
    • ok... 首先使用 file_exists() 方法检查文件是否存在,如果返回 false 尝试使用 fopen() 创建文件,创建文件后使用 chmod("filename" 更改权限, 755);
    • 我试过了,这发生了:警告:在第 18 行的 /home/u542847060/public_html/Into Oblivion v2/adventure.php 中除以零不存在。 “不存在”部分是我的 if 语句的“如果为假”部分。
    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多