2012-07-27 106 views
1

我正在使用PHP文件来运行cmd命令,但命令未正确执行,可能是什么原因?exec在PHP中无法正确执行

我的PHP文件执行cmd命令:

<?php 
exec("C:\wamp\php\php.exe -e C:\wamp\htdocs\Me\mail.php [email protected] you"); 
?> 

的mail.php文件:

<?php 
$subject = "Please check out"; 
$headers = "From: [email protected]\n"; 

$content = "First check"; 
$fp = fopen("C:/xampp/htdocs/Me/checking.txt","wb"); 
fwrite($fp,$content); 
fclose($fp); 

mail($argv[0], $subject, $argv[1], $headers); 
?> 

既不创建文件或邮件被发送,我认为该命令没有被执行正确,那我该如何解决呢?

回答

0

也许函数exec()在您的配置中被禁用。

检查PARAM disabled_function在你的php.ini,并试图关闭安全模式在httpd.conf php_admin_value safe_mode设置关闭

+0

在disabled_function中未禁用exec。而我无法在httpd.conf文件中找到php_admin_value – Conrad 2012-07-27 07:08:13

0

在你第一个例子中,你应该使用/传递给exec字符串中代替 \。 \用于转义字符,不会用作路径分隔符。如果在字符串中必须有\,则必须将其转义,如“c:\\ abc \\ def”中所示。你实际上试图执行“C:wampphpphp.exe -e C:wamphtdocsMemail.php [email protected]你”,这很可能无法执行。将第二个和第三个参数添加到exec(),然后检查第三个错误返回值。

在第二位代码中,您创建的文件不会被引用。

+0

所以你的意思是我应该使用\\而不是\? – Conrad 2012-07-27 06:54:30

+0

我改变它像这个exec(“C:/wamp/php/php.exe -e C:/wamp/htdocs/Me/mail.php [email protected]你”);但仍然没有发送邮件并且未创建txt文件。 – Conrad 2012-07-27 07:02:12

+0

既然你是在一个窗口框中,那可能是最好的选择(是的)。 – walrii 2012-07-27 07:02:45