2011-04-28 123 views
1

也许我的问题很简单,但我无法回答它。不同的输出与PHP客户端和浏览器

我这个小PHP代码:

<?php 

$line="echo 'hello' | lpr -Pmyprinter"; 
$out=system($line,$output); 
?> 

当我用我的命令行执行该代码(我用PHP 5.3.6和Apache 2.2.17的Linux),它在myprinter印有“你好”。

如果我使用我的浏览器执行此代码,它看起来像管道被忽略!

我试着用exec(),passthru()等等,结果是一样的。

感谢您的帮助。

P.S:我以前用PHP 5.1运行这段代码。

+2

执行web服务器用户有权限使用打印机? – 2011-04-28 20:51:31

+0

尝试从终端 – Flask 2011-04-28 21:09:56

+0

运行你的脚本作为apache用户(www-debian上的数据)感谢您的意见。是的,我从终端执行脚本作为apache用户(在我的系统中是apache)并且它工作正常。另外,我使用php命令get_current_user()来确保脚本以apache方式执行。用户是相同的,但是Web服务器不运行。 – gonvi 2011-04-28 22:01:01

回答

0

尝试使用以下:

echo `echo hello | lpr -Pmyprinter` 
+0

嗨。我刚刚尝试过,结果是一样的,在终端上使用php也没关系,并且从Web浏览器管道被忽略。 – gonvi 2011-04-29 08:02:30

+0

如何使用escapeshellarg和/或escapeshellcmd? – 2011-05-04 09:31:51

相关问题