我想从 PHP 脚本运行 Perl 脚本。我可以从终端(作为 root 用户)很好地做到这一点,但是从我的应用程序(www-data 用户)运行时我不能。
在 localhost 上开发应用程序时,我也可以做到这一点,但是当我切换到另一台服务器时,问题就出现了。
我的网页使用 AJAX POST 请求调用 PHP 脚本,这适用于我的其他不调用 Perl 的 PHP 脚本。
我在我的 PHP 脚本中尝试了以下命令,但没有成功:
system("/filepath/file.pl");
exec("/filepath/file.pl");
passthru("/filepath/file.pl");
托管我的应用程序的服务器上的 Apache 日志显示以下错误:
sh: /file.pl: not found
通过在我的服务器上运行以下代码,我看到 Web 用户被视为 www-data:
ps aux | grep apache
为了测试,我还设置了我的应用程序使用的所有文件和目录的权限,以允许任何用户使用 chmod 777 进行任何类型的访问。
请注意:我的应用程序仅对某些用户可用(我使用 .htaccess 文件来设置这些权限并要求用户登录)所以如果有办法改变服务器如何看待这个用户(从 www-data,到登录用户的凭据)那么也许会有所帮助-我该怎么做?