2011-10-19 212 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」時,它會提取數據並輸出。但是對於這個價值來說,它的表現有點奇怪。 –