2014-12-11 101 views
0

我遇到了一个问题,我试图使用ssh远程执行一个php文件。该PHP文件应该做一个JSON文件,也回声“嗨”。它回声的“嗨”,但从来没有创建JSON文件。远程执行PHP文件来创建JSON文件

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

主服务器

ssh [email protected] '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 

它将输出“喜”,也创造了config.json文件。

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

+0

我删除了说明中“不要使用”标签的标签。 – GolezTrol 2014-12-11 00:22:38

+2

脚本本身并没有失败,因为你得到了echo,但也许'file_put_contents'失败了。你有没有试图检查其结果?它根据结果返回一个整数或“false”。另外,你有没有试过指定完整的路径,所以你知道文件存储在正确的目录? – GolezTrol 2014-12-11 00:24:44

+0

当你运行这些命令并且它们工作时,你是否将它们作为根目录的主目录运行? – Phil 2014-12-11 00:25:01

回答

0

大家好,谢谢你的所有帮助,但我在检查帖子之间修复了它。我通过将“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"; 

?> 

一个多月来我一直在挑战我。东西太小了。谢谢你的意见。我非常感激。