Can';在PHP/Apache中找不到Perl脚本

Can';在PHP/Apache中找不到Perl脚本,php,apache,perl,system,passthru,Php,Apache,Perl,System,Passthru,我想从一个PHP脚本运行一个Perl脚本。我可以在终端(作为root用户)上做得很好,但在我的应用程序(www数据用户)上运行时,我做不到 在localhost上开发应用程序时,我也能做到这一点,但当我切换到另一台服务器时,问题就出现了 我的网页使用AJAX POST请求调用PHP脚本,这对于我的其他不调用Perl的PHP脚本来说很好 我在PHP脚本中尝试了以下命令,但没有成功: system("/filepath/file.pl"); exec("/filepath/file.pl"); pa

我想从一个PHP脚本运行一个Perl脚本。我可以在终端(作为root用户)上做得很好,但在我的应用程序(www数据用户)上运行时,我做不到

在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数据:

ps aux | grep apache
为了进行测试,我还使用chmod 777设置了应用程序使用的所有文件和目录的权限,以允许任何用户进行任何类型的访问


请注意:我的应用程序仅对某些用户可用(我使用.htaccess文件设置这些权限并要求用户登录),因此如果有办法更改服务器查看此用户的方式(从www数据到登录用户的凭据)那也许会有帮助-我该怎么做呢?

试试这样的方法

exec("/usr/bin/perl /full-path/script.pl",$output);

谢谢你的建议!最后,托管我的应用程序的服务器上Apache目录中php.ini文件的安全设置出现了问题:

/etc/php5/apache2/php.ini
安全模式设置为“开”,这将阻止php文件访问/执行任何本地文件。(当尝试访问另一个文件(而不是脚本文件:other.html)时,PHP脚本也失败了)

为了在不删除服务器上所有应用程序的安全模式设置的情况下解决此问题,我更改了上面的php.ini文件,以包括以下内容:

safe_mode: on
safe_mode_include_dir: /filepath
safe_mode_exec_dir: /filepath
有关这些配置变量的更多信息,请参见:
/filepath
将启动驱动器文件系统的根目录,例如
c:\
。如果
/filepath
是您网站的根目录,那么,这将不起作用。您需要包含整个路径:
/home/user/sites/example.com/public\u html/filepath/file.pl
-键入thing
'not found'
是否确实表示权限问题?为什么OP“尝试此操作”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。