在php中执行tcl脚本

时间:2012-10-19 06:29:00

标签: php tcl passthru

我正在尝试使用passthru函数在php中执行tcl脚本。 TCL脚本在普通的unix终端上完美执行。而在php中它没有在浏览器上给出预期的结果。

我在php中使用passthru函数传递环境变量。环境变量正在正确传递,但我注意到其余的命令没有给出结果。所以我尝试执行ls命令和日期命令。

date命令在浏览器上提供输出,而ls在浏览器上不提供任何输出。

为什么会这样?这与who和其他具有大输出的命令的结果相同。这里有什么我想念的吗?

这是我的示例tcl脚本ls_sample.tcl

puts "entering tcl"
set date_variable [exec date]
puts $date_variable
set ls_variable [exec ls]
puts $ls_variable 

浏览器上的示例输出:

executing tclscript entering tcl Thu Oct 18 23:23:38 PDT 2012 

为什么不打印ls?虽然它在unix终端上运行得很好吗?

1 个答案:

答案 0 :(得分:1)

我认为这可能是Apache / Php /您的系统配置问题。我只是在我的机器下尝试了相同的例子并得到了正确的结果:

entering tcl Sat Oct 27 11:08:03 CEST 2012 blog forum index.rvt launchtcl.php pttest.tcl sd test.tcl test2.tcl

我也尝试通过做这些事来重现问题,但它总是对我有用:

  • ls /usr/bin,用于获取更长的字符串
  • who,品种
  • chown.tcl文件编辑到与Apache使用的用户/组不同的用户/组(www-data:www-data
  • chown编辑.tcl文件(如前所述),chmod o-rx编辑目录
  • passthru('tclsh pttest.tcl')切换为passthru('./pttest.tcl')pttest.tcl可执行文件,并添加#!/usr/bin/tclsh作为第一行
  • 与以前相同,但是chown pttest.tcl文件

这些测试都没有给我你的问题。我现在正在为我使用的测试目录添加Apache配置。

<Directory />
    Options -Indexes FollowSymLinks MultiViews
    DirectoryIndex index.html index.htm index.tcl index.rvt
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

很抱歉,如果我无法回答您的问题,但也许这些信息可以帮助您。