JSON — Попытка выполнить файл PHP с удаленного сервера

Я пытаюсь выполнить php-файл с удаленного сервера, как будто я набираю «php example.php» в консоли удаленного сервера. В настоящее время он пытается вернуть исходный сервер. Я пытался выполнить прямо из php, Net_SSH2 и выполнения .sh. Я не уверен, где я иду не так. Я постараюсь разобрать проблему как можно лучше.

База данных

------------------------
|   ID | password      |
------------------------
|   50 | testpassword  |
------------------------

файлы

Главный сервер (10.0.0.10):
carrytoserver.php, execpw.php, execpw2.php, execpw3.php, execute.php

Сервер приложений (10.0.0.20): grabid.php, login.php, makeconfig.php, local_script.php, carry.txt

Все разрешения 777

MAINSERVER

execute.php

<?php
$password="testingpassword";
include('carrytoserver.php');
include('execpw.php');
?>

carrytoserver.php

<?php
include('Net/SSH2.php');$ssh = new Net_SSH2('10.0.0.20');
if (!$ssh->login('root', 'serverpassword')) {
exit('Login Failed');
}echo $ssh->exec("echo $password > /test/example/carry.txt");
?>

execpw.php

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('10.0.0.20');
if (!$ssh->login('root', 'serverpassword')) {
exit('Login Failed');
}

echo $ssh->exec('php /test/example/grabid.php');
?>

Appserver

carry.txt

testpassword

grabid.php

<?php
include 'login.php';
$carrypw=file_get_contents('carry.txt');
$password=str_replace("\n","", $carrypw);
$con=mysql_connect("$host", "$username", "$dbpassword")or die("cannot connect");
mysql_select_db("$db_name") or die ("cannot select DB");

$result = mysql_query("SELECT * FROM example
WHERE password='$password'");

while($row = mysql_fetch_array($result)) {
$id = $row['ID'];

}

include 'makeconfig.php';

?>

makeconfig.php

<?php

$return_arr = array('ID' => $id, 'password' => "$password");$json_data = json_encode($return_arr);
file_put_contents("config.json", $json_data);

?>

local_script

#! /bin/bash
echo "php grabid.php"

execute.php выполнит carrytoserver.php, который перенесет пароль на 10.0.0.20 и поместит его в carry.txt. Затем он выполнит execpw.php, который запустит grabid.php 10.0.0.20. grabid.php затем захватит идентификатор, связанный с паролем.

Как только это будет сделано, все это 10.0.0.20 должно иметь $ password и $ id. Затем Grabid.php запустит makeconfig.php и создаст файл конфигурации json для приложения.

В настоящее время он перенесет пароль на 10.0.0.20 и выполнит grabid.php, но не создаст файл json или продолжит работу. Если я добавлю $ password в начало файла grabid.php и запустлю его из консоли 10.0.0.20, он запустится.

Если я добавлю
эхо «привет»;
до конца файла grabid.php и его запуска с самого начала он отобразит «hi» на консоль сервера 10.0.0.10.

Я также попробовал несколько других вещей в файле execpw.php

execpw2.php

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('10.0.0.20');
if (!$ssh->login('root', 'serverpassword')) {
exit('Login Failed');
}

echo $ssh->exec('/test/example/local_script.sh');
?>

execpw3.php

<?php

$executephp="ssh [email protected] 'php grabid.php'";
exec ($executephp);

?>

Все дают одинаковый результат. Прошу прощения за перегрузку информации, но я стараюсь предоставить как можно больше информации.

0

Решение

РЕДАКТИРОВАТЬ :

Если пути carry.txt и grabid.php указаны правильно, вы должны изменить строку grabid.php следующим образом:

$carrypw=file_get_contents('/test/example/carry.txt');
1

Другие решения

Я смог исправить это, изменив «file_put_contents» на абсолютный путь.

<?php

$return_arr = array('ID' => $id, 'password' => "$password");$json_data = json_encode($return_arr);
file_put_contents("/test/example/config.json", $json_data);

?>

Спасибо за помощь!

0

По вопросам рекламы [email protected]