Permissions 如果从浏览器调用,则php exec不执行

Permissions 如果从浏览器调用,则php exec不执行,permissions,exec,php,Permissions,Exec,Php,这是stackoverflow中经常出现的话题,但最后我找不到任何明确的解决方案 我在本地XAMPP(OS X)上安装了这个PHP脚本。 test.php <?php exec('lpr -MyPrinter photos/image.jpg'); ?> 但如果我从浏览器调用它,它将不起作用 http://localhost/mysite/test.php 考虑到我的安全性要求非常低,因为我将仅出于个人目的在本地使用此脚本。您能告诉我正确的解决方案吗?可能有很多原因,但我建议查看

这是stackoverflow中经常出现的话题,但最后我找不到任何明确的解决方案

我在本地XAMPP(OS X)上安装了这个PHP脚本。

test.php

<?php exec('lpr -MyPrinter photos/image.jpg'); ?>
但如果我从浏览器调用它,它将不起作用

http://localhost/mysite/test.php

考虑到我的安全性要求非常低,因为我将仅出于个人目的在本地使用此脚本。您能告诉我正确的解决方案吗?

可能有很多原因,但我建议查看错误消息。
exec()
函数不会返回它,但您可以将错误输出重定向到临时文件:

<?php exec('lpr -MyPrinter photos/image.jpg 2> /tmp/error.txt'); ?>


在浏览器中调用脚本后,查看/tmp/error.txt。

打赌它的i用户权限问题,但不知道os x是如何做的。除了@Dagon的评论,请检查服务器执行脚本时运行的用户和组。我也不确定OSX上如何处理用户/组/权限,但您的服务器可能是作为一个专门为服务器创建的用户来执行脚本的,该服务器将具有受限的权限。@G-Nugget whoami在从浏览器调用时返回“nobody”,也不确定OSX,但通常是php cli(命令行界面)具有不同的php.ini。cli php.ini可能已启用exec,而web php.ini可能未启用exec。
<?php exec('lpr -MyPrinter photos/image.jpg 2> /tmp/error.txt'); ?>