gpt4 book ai didi

php - 从 PHP 运行脚本

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:59 24 4
gpt4 key购买 nike

我有一个关于PHP和Linux系统交互的问题。

我想从网页启动Steam,该页面的地址是

http://site.eu/cp/user/services/21/steaminstall

以及我运行命令所在网页的内部路径

/var/www/wwwuser/data/www/site.eu/panel.php?(here goes $_POST[''] data)

Steam 客户端是

/var/www/wwwuser/data/Steam/SteamInstall

问题是,我知道如何访问这个脚本,我也可以执行简单的

echo "Script is Runing"

但是当我的操作涉及到这段代码时

#!/bin/bash
wget -P /var/www/aftersoft/data/Servers/Steam/ http://media.steampowered.com/client/steamcmd_linux.tar.gz &&
tar xvfz /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz -C /var/www/aftersoft/data/Servers/Steam/ &&
sh /var/www/aftersoft/data/Servers/Steam/steamcmd.sh +login anonymous +quit &&
rm /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz &&
echo "Steam Installation and Update Completed"

如果我从网页运行它,它不会执行任何操作,但当我尝试在 SSH 用户下运行它时它会起作用(与具有写入此文件夹权限的 apache 用户相同)

所以我的问题是,我做错了什么?

更新:我运行脚本的 php 代码是

if($path[2] === 'steaminstall')
{
$InstallSteam = exec('/var/www/aftersoft/data/Servers/Steam/SteamInstall', $Output, $Error);
if($Error === 0)
{
$Status = $DB->SteamStatus($_SESSION['username']);
if($Status)
{
header('Location: /cp/'.$_SESSION['username'].'/services/');
}
else
{
$Smarty->assign('InstallStatus', 'Database Error Occured');
$Smarty->display('steaminstall.tpl');
}
}
if($Error === 2)
{
$Smarty->assign('InstallStatus', $Output);
$Smarty->display('steaminstall.tpl');
}
}

这是我的数据库查询功能

public function SteamStatus($Username)
{
$Status = '1';
$Statement = $this->DBConnection->prepare("UPDATE account set steaminstalled = ? where username = ?");
$Statement->bindParam(1, $Status);
$Statement->bindParam(2, $Username);
$IStatus = $Statement->execute();
if($IStatus)
{
return true;
}
else
{
return false;
}
}

最佳答案

问题解决了,你只需要指定脚本的直接路径(就好像你不指定,脚本本身不知道在哪里下载和解压)

最终的 bash 脚本(PHP 部分完全没问题):

#!/bin/bash
wget -P /var/www/aftersoft/data/Servers/Steam/ http://media.steampowered.com/client/steamcmd_linux.tar.gz &&
tar xvfz /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz -C /var/www/aftersoft/data/Servers/Steam/ &&
sh /var/www/aftersoft/data/Servers/Steam/steamcmd.sh +login anonymous +quit &&
rm /var/www/aftersoft/data/Servers/Steam/steamcmd_linux.tar.gz &&
echo "Steam Installation and Update Completed"

关于php - 从 PHP 运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21581202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com