【发布时间】:2015-11-18 09:52:44
【问题描述】:
我想从 PHP 脚本运行 Perl 脚本。我可以从终端(作为 root 用户)很好地做到这一点,但是从我的应用程序(www-data 用户)运行时我不能。
在本地主机上开发应用程序时,我也能做到这一点,但是当我切换到另一台服务器时,问题就出现了。
我的网页使用 AJAX POST 请求调用 PHP 脚本,这适用于我的其他不调用 Perl 的 PHP 脚本。
我在我的 PHP 脚本中尝试了以下命令,但没有成功:
system("/filepath/file.pl");
exec("/filepath/file.pl");
passthru("/filepath/file.pl");
托管我的应用程序的服务器上的 Apache 日志显示以下错误:
sh: /file.pl: not found
通过在我的服务器上运行以下代码,我看到网络用户被视为 www-data:
ps aux | grep apache
为了测试,我还设置了我的应用程序使用的所有文件和目录的权限,以允许任何用户使用 chmod 777 进行任何类型的访问。
请注意:我的应用程序只对某些用户可用(我使用 .htaccess 文件来设置这些权限并要求用户登录)所以如果有办法改变服务器如何看待这个用户(来自 www-数据,登录用户的凭据)那么也许这会有所帮助 - 我该怎么做?
【问题讨论】:
-
/filepath将启动驱动器文件系统的根目录,例如c:\。如果/filepath是您网站的根目录,那将无法正常工作。你需要包含整个路径:/home/user/sites/example.com/public_html/filepath/file.pl- type thing -
'not found'真的表示权限问题吗?
标签: php apache perl system passthru