Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP运行shell脚本_Php_Bash_Magento_Exec - Fatal编程技术网

通过PHP运行shell脚本

通过PHP运行shell脚本,php,bash,magento,exec,Php,Bash,Magento,Exec,有没有办法通过PHP运行以下脚本 我曾尝试使用exec、shell_exec和system,但都不起作用。当我尝试exec('whois domain.com')时,它们确实起作用,但这一定是我做错了 如果这是不可能的,是否有人知道通过PHP备份Magento的好方法,不幸的是,我没有SSH访问权限 谢谢 更新 这就是我试图使用的代码 system('magento-backup-script.bin -date', $output); var_dump($output); 输出:int(

有没有办法通过PHP运行以下脚本

我曾尝试使用exec、shell_exec和system,但都不起作用。当我尝试exec('whois domain.com')时,它们确实起作用,但这一定是我做错了

如果这是不可能的,是否有人知道通过PHP备份Magento的好方法,不幸的是,我没有SSH访问权限

谢谢

更新 这就是我试图使用的代码

system('magento-backup-script.bin -date', $output); 
var_dump($output);
输出:int(127)

Php安全模式已关闭

更新:

我通过将脚本复制到PHP文件中并使用战术操作符来运行命令,从而成功地完成了任务。谢谢大家的帮助大家使用PHP的system()命令

system()与的C版本类似 执行 给定命令并输出结果

system()调用还尝试 自动刷新web服务器的 输出缓冲区位于每行 如果PHP作为服务器运行,则输出 模块

如果您需要执行一个命令 从命令中获取所有数据 直接返回,没有任何更改 干扰,使用passthru()命令 功能


()。

听起来您的网络主机启用了安全模式,这会阻止您调用
系统()。将包含以下代码的php文件上载到您的Web服务器,然后在此处链接到该文件(或者如果服务器无法公开访问,请将其放在DropBox或其他位置)。这将告诉我们您的主机上禁用了哪些功能/如果启用了safemode

<?php 
  phpinfo();
?>

您可以使用在系统上执行命令,例如:

如果您的字符串名为backup,并且位于/home/rob/scripts/backup/megento中,您可以这样发出命令:

如果您得到的结果是127,这称为退出代码,int 127通常表示bas脚本试图执行命令,但未找到该命令

查看bash脚本,它使用tar命令创建归档文件,您是否确保tar存在并安装在服务器上

您可能还希望通过管道将输出传输到错误日志,以查看发生的情况:

system("/home/rob/scripts/backup/megento/backup >> results.txt");
echo file_get_contents("/home/rob/scripts/backup/megento/results.txt");
或者,如果这导致文件为空,可能是烫发问题,请尝试以下操作:

exec("/home/rob/scripts/backup/megento/backup",$full_result);
var_dump($full_results);// Array I believe.

如果运行apache版本/php的用户无权运行该脚本,则该脚本将不会运行。检查文件所有权/权限。还记得在运行exec()时,您是在应用程序user.system('magento-backup-script.bin-date',$output)的权限下运行的吗;变量转储(输出);您是否
chmod
将文件转换为755,如果不尝试,请先这样做。这是通过Apache/mod php运行的吗?如果您没有SSH访问权限,您将使用什么上传到此主机?添加了exec尝试,这将捕获来自终端的所有数据,以便您可以查看发生了什么。
exec("/home/rob/scripts/backup/megento/backup",$full_result);
var_dump($full_results);// Array I believe.