[英]weird PHP shell_exec Java behavior
我有一個與PHP shell_exec()有關的非常不尋常的問題。 好吧,我實際上將要執行外部Java程序。 我做這樣的測試
<?php
$command = 'C:\\Program Files\\Java\\jdk1.6.0_35\\bin\\java.exe';
$val = shell_exec($command);
echo('command:' . $command);
echo('<BR>');
echo('val:' . $val);
?>
一切都很好,但是當我嘗試這樣做時
<?php
$command = 'C:\\Program Files\\Java\\jdk1.6.0_35\\bin\\javac.exe';
$val = shell_exec($command);
echo('command:' . $command);
echo('<BR>');
echo('val:' . $val);
?>
沒有輸出。 真的很奇怪 我也嘗試過使用exec()但沒有什么不同。 下一個奇怪的事情是當我嘗試這個
<?php
$command = 'C:\\Program Files\\Java\\jdk1.6.0_35\\bin\\java.exe -version';
$val = shell_exec($command);
echo('command:' . $command);
echo('<BR>');
echo('val:' . $val);
?>
我使用確切的java.exe,但添加了-version作為額外選項。 沒有輸出。
在命令行中執行java.exe和javac.exe時都會輸出。 我使用Win 7 64位,XAMPP 1.8.1(Apache 2.4.3,PHP 5.4.7)和JDK 1.6更新35。
我在這里搜索了此問題,並試圖實現對相關問題的回答,但他們沒有解決。
任何與此有關的解釋。 感謝您的幫助 :)
我搜索找到這樣的答案:
因此,如果我們加上額外的2>&1,該代碼就可以了,它將標准錯誤重定向到標准輸出。
<?php
$command = '"C:\\Program Files\\Java\\jdk1.6.0_35\\bin\\javac.exe" 2>&1';
$val = shell_exec($command);
echo('command:' . $command);
echo('<BR>');
echo('val:' . $val);
?>
等等
<?php
$command = '"C:\\Program Files\\Java\\jdk1.6.0_35\\bin\\java.exe" -version 2>&1';
$val = shell_exec($command);
echo('command:' . $command);
echo('<BR>');
echo('val:' . $val);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.