日期:2014-05-16  浏览次数:20469 次

如何在PHP WEB页面点击链接执行SHELL脚本
如题,做了个PHP生成EXL的程序,想在页面点击链接能调用这个PHP生成EXL,如何实现?

我现在做法是在WEB页面做了个链接,链到getexl.php,如下:

WEB调用代码:
<a href="http://xxxx/getexl.php">生成EXL</a>

getexl.php代码:
<?php
system("/usr/local/bin/php /www/xxxx/exllfile.php");//生成EXL程序
?>

点链接后IE下边进度条非常慢,执行不了。 /www/xxxx/exllfile.php这个程序一点问题没有,LINUX下运行只有几秒钟,这是什么问题?

------解决方案--------------------
没有权限了吧
------解决方案--------------------
引用:
点链接后IE下边进度条非常慢,执行不了。 

是没有生成文件还是生成了文件不能下载。
如果是生成了文件不能下载。/usr/local/bin/php /www/xxxx/exllfile.php
生成exl文件后,有设置header与echo 文件内容吗?

例如生成的文件名是1.xls。
因为你是需要通知浏览器下载的,需要设置header。

header('content-type:application/octet-stream');
header('content-disposition:attachment;filename=1.xls');
header('content-length:'.filesize('1.xls'));
readfile('1.xls');

------解决方案--------------------
是否是php关闭了system函数。 disabled_function参数
------解决方案--------------------
引用:
是把这个参数设成on就可以吧,这样disable_functions = on?


不是,这个位置是填写想禁用的方法。例如:
disable_functions = system,exec,shell_exec,passthru,proc_open,proc_close, proc_get_status,checkdnsrr,getmxrr,getservbyname,getservbyport, syslog,popen,show_source,highlight_file,dl,socket_listen,socket_create,socket_bind,socket_accept, socket_connect, stream_socket_server, stream_socket_accept,stream_socket_client,ftp_connect, ftp_login,ftp_pasv,ftp_get,sys_getloadavg,disk_total_space, disk_free_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname 
------解决方案--------------------
引用:
那打开PHP的system函数应该怎么设呢?


把 system 函数从 配置文件中 disable_functions 段中删除
------解决方案--------------------
检查安全模式。。。。

另外,生成exl也不用这样吧?