2009-10-12 73 views
0

我必须在以下位置 下的PHP脚本:\ WAMP \ WWW \ TCL \ BIN \proc_open工作目录

我访问相同的通过浏览器(http://localhost/tcl/bin/xxx.php

在PHP脚本。我做了proc_open

$app = 'C:/wamp/www/tcl/bin/tclsh84.exe'; 
$process = proc_open($app, $descriptorspec, $pipes); 

,如果我给它的工作原理的完整路径,但如果我只是给tclsh84.exe这是行不通的。 虽然PHP手册指出,如果你不给proc_open的第四个参数(CWD)确认当前正在执行的进程的目录。

有人可以指导我,因为我不能硬编码的TCL可执行文件路径,因为这需要在Windows和Linux都可以工作。

问候, 大额牛

回答

1

如果使用tclsh84.exe的完整路径,则表示可以使用。所以,一个解决方案可能是找出完整路径并在您拨打proc_open时使用它。


如果你知道你tclsh84.exe是在你的PHP脚本,你可以使用基于dirname__FILE__东西目录;有点像这样,我想:

$dir = dirname(__FILE__); 
var_dump($dir); // directory in which the current PHP script is in 

$path = $dir . DIRECTORY_SEPARATOR . 'tclsh84.exe'; 
var_dump($path); 

考虑到我使用的PHP脚本是/home/squale/developpement/tests/temp/temp.php,我会得到:

string '/home/squale/developpement/tests/temp' (length=37) 
string '/home/squale/developpement/tests/temp/tclsh84.exe' (length=49) 

而且,如果需要的话,你可以用“..”上去在目录树中,然后使用目录名称关闭。


另一种解决方案可能是,以确保您要执行的程序是在PATH环境变量 - 但如果它是一个的你的应用程序只用了一个程序,它并没有太大的意义修改你的PATH,我猜...

0

我相信正在执行的进程就意味着你的PHP路径,而不是脚本路径。否则,你可以在配置文件中使用define,它不会伤害。

+0

你能告诉我如何在配置文件中定义?你能写一些示例代码吗? – Vidya