2014-02-16 87 views
-2

我登录到AS400并转到QSHELL(STRQSH)。之后,我粘贴以下命令并在QSHELL中运行它无法在PHP脚本中执行CL命令(AS400命令)

system "IVIEW/PRTDISTL APPNAME(MYJOBLOG) STMF(TEST_89.PDF) HOLD(*NO)" 

它的工作原理。但是当我使用PHP脚本执行上述命令时,请按照以下步骤操作

$cmd = "IVIEW/PRTDISTL APPNAME(MYJOBLOG) STMF(TEST_89.PDF) HOLD(*NO)"; 
$cmd = 'system "' . $cmd . '"'; 

$output = array(); 
exec ($cmd, $output , $retVal); 

echo "return value code: " . $retVal; 

它返回错误代码为255.请帮助我如何解决此问题。谢谢

+0

PHP是否在IBM i或其他服务器上运行? –

+0

是的,在IBM i上运行的PHP – user1122960

回答

1

尝试用于i5/OS的PHP工具包。有描述它一个较旧的红皮书:http://www.redbooks.ibm.com/redbooks/pdfs/sg247327.pdf

一个例子从那里:

<HTML> 
<?php 
/* Connect to server */ 
$conn = i5_connect("localhost", "PHPUSER", "MYPASSWORD"); 
if (!$conn) 
die("<br>Connection using \"localhost\" with USERID and PASSWORD failed. Error 
number =".i5_errno()." msg=".i5_errormsg())."<br>"; 
else 
echo "<br>Connection using \"localhost\" with USERID and PASSWORD OK!<br>\n"; 
/* Call Retrieve Network Attributes command */ 
$ret = i5_command("rtvneta", array(), array("sysname" => "sysn", "lclnetid"=>"lclnet")); 
if (!$ret) die("<br>rtvneta command failed. errno=".i5_errno()." 
msg=".i5_errormsg()); 
print "<h1><b>Results of \"rtvneta\" command </b></h1><br>" ; 
print "System Name : $sysn<br>" ; 
print "Local Net ID : $lclnet<br>" ; 
/* Close connection */ 
i5_close($conn); 
?> 
</HTML> 
+0

由于客户请求,系统不使用PHP Zend Tookit for i5/OS。我们使用QSHELL命令(QSH)并使用PHP脚本的执行功能执行 – user1122960

0

我看到两个pontential问题:

  1. PHP运行在PASE,而不是在QSHELL。尝试从QP2TERM手动运行您的呼叫。
  2. 用户权限。确保QTMHHTTP(或任何运行PHP的用户)拥有您尝试调用的程序的适当权限。

截至IBM i information center提到的(可能需要标志“系统-K”),您可以为您在标准输出更多的信息,你应该在$输出,和你的PHP服务器joblog。

+0

我已经通知管理员,这是由于在调用RPG程序时库IVIEW不存在于库列表中,因此文件无法打开。现在它可以工作。非常感谢您的支持:)。 – user1122960

+0

“RPG程序”与这个问题有什么关系?似乎没有任何“RPG程序”被引用,除非它被'PRTDISTL'命令调用。如果它在命令内部运行,那么命令的开发人员应确保存在所需的库。简单地通过设置命令的'PRDLIB()'属性就可以轻松完成。 – user2338816