You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XAMPP中exec执行含extglob的shell命令时遇语法错误

问题原因

PHP的exec()函数默认调用sh shell,而你使用的!(*.xml)是bash特有的**扩展通配符(extglob)**特性,sh不支持该语法,因此抛出语法错误。你在终端直接执行时用的是bash,所以能正常运行。

解决方案

方案1:指定用bash执行命令

明确让命令在bash环境下运行,将整个命令包裹在bash -c中:

exec('bash -c "shopt -s extglob && cd /opt/lampp/htdocs/testes/xml/ && rm !(*.xml)"');

或者调整引号避免冲突:

exec("bash -c 'shopt -s extglob && cd /opt/lampp/htdocs/testes/xml/ && rm !(*.xml)'");

方案2:用find命令替代(更通用安全)

不依赖bash的扩展特性,使用find命令实现相同效果,兼容性更好:

exec('cd /opt/lampp/htdocs/testes/xml/ && find . -maxdepth 1 -type f ! -name "*.xml" -delete');
  • -maxdepth 1:仅处理当前目录,不递归子目录
  • -type f:仅匹配文件,避免误删目录
  • ! -name "*.xml":排除xml后缀的文件
  • -delete:删除匹配到的文件

内容的提问来源于stack exchange,提问作者themadmassa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:27:03