2011-10-19 164 views
1

我有一个调用shell脚本的php脚本。 shell脚本运行sql命令并将输出传输到shell变量。 现在,我该如何将这个变量传递给PHP脚本?将变量从sqlplus传递给unix,然后传递给php

如:PHP代码:

$_param1 = "JOHNDOE"; 
$out = exec("sh shellscript.ksh $_param1"); 
echo $out; 

Shell脚本:

#!/bin/sh -u 

param=$1; 

out=`sqlplus -s $connectStr <<EOF 

set serveroutput off; 
set feedback off; 
set heading off; 
set pagesize 0; 
set verify off; 
set echo off; 

select field from sometable where condition ='$param'; 
exit; 
EOF` 

echo $out; 

我需要转移出去$向PHP页面。除了创建文件还有其他方法吗?

回答

0

将$ out作为'exec'的参数传递,这样shell的返回值将被存储在该var上。

myshell.sh

#!/bin/bash 
echo $1 

myphp.php

<?php 
$param = "HEY, this is Output"; 
exec("sh myshell.sh \"${param}\"", $out); 
print_r($out); 
?> 

然后调用PHP脚本

$ php myphp.php 
Array 
(
    [0] => HEY, this is Output 
) 

也许你可能有上执行一些权限问题该Shell或甚至你的PHP配置可能是错误的。

+0

我也试过。我已经用system()函数也尝试过了。但似乎没有将输出填充到php变量中。当我在Unix提示符下单独运行shell脚本时,shell中会生成所需的输出。有任何想法吗? –

+0

查看我的更新,我认为您可能会遇到许可问题,请尝试与Web服务器的用户一起调用该脚本以查看结果。 – 0xd

+0

我有一个预感,这里的问题是,PHP不拾取echo'ed数据,即只是价值。它只显示一个空数组 - Array()。例如:当我回显“Hello World”时,它会提取数据并输出。但是对于这个价值来说,它的表现有点奇怪。 –