【问题标题】:Remotely Execute PHP File to Create JSON File远程执行 PHP 文件创建 JSON 文件
【发布时间】:2014-12-11 08:53:51
【问题描述】:

我在尝试使用 ssh 远程执行 php 文件时遇到问题。 php 文件应该创建一个 json 文件并回显“hi”。它回显“hi”,但从不创建 JSON 文件。

所有文件和目录都设置为 -rwxrwxrwx 或 drwxrwxrwx。只有两台服务器上的用户名都是“root”。应用服务器的密码已预先保存在主服务器上。

主服务器

ssh root@xxx.xxx.xxx.xxx 'php /test/example/makeconfig.php'

应用服务器

makeconfig.php

<?php

$return_arr = array('ID' => 50, 'password' => "testpassword");


$json_data = json_encode($return_arr);
file_put_contents("config.json", $json_data);

echo "hi";

?>

我从控制台的主服务器运行代码。它会在主服务器的控制台屏幕上输出“hi”,但是当我转到应用程序服务器时,它不会创建文件“config.json”。如果我运行命令

php /test/example/makeconfig.php

在应用服务器上,它将输出“hi”并创建 config.json 文件。

我只是不确定如果从远程服务器执行 php 文件,为什么不会创建配置文件。 感谢您的帮助。

【问题讨论】:

  • 我删除了描述中大写“请勿使用”的标签。
  • 脚本本身并没有失败,因为你得到了回声,但也许file_put_contents 失败了。你试过检查它的结果吗?它根据结果返回一个整数或false。另外,您是否尝试过指定完整路径以确保文件存储在正确的目录中?
  • 当你运行命令并且它们工作时,你是从 root 的主目录以 root 身份运行它们吗?
  • php 脚本是否有权写入其工作目录?您是否尝试检查 file_put_contents() === false 的返回值?您可以在显示错误或记录错误的环境中运行吗?
  • 只是一个建议,您不应该允许通过 ssh 使用 root,因为它是一个漏洞。我认为问题在于,当您执行php /test/example/makeconfig.php 时,该文件正在您执行 PHP 文件的目录中创建,因此很可能该文件已创建,但不是您预期的位置,而是主文件夹。为确保文件已创建,请检查 file_put_contents() 是否也未返回 false。也尝试cd /test/example/ 然后php makeconfig.php

标签: php json


【解决方案1】:

大家好,感谢您的所有帮助,但我在检查帖子之间修复了它。我通过将“file_put_contents”更改为绝对路径来修复它。

<?php

$return_arr = array('ID' => 50, 'password' => "testpassword");


$json_data = json_encode($return_arr);
file_put_contents("/test/example/config.json", $json_data);

echo "hi";

?>

一个多月以来一直在挑战我。这么小的东西。谢谢你的cmets。非常感谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多