我try 使用exec函数直接从index.php发送一个shell 命令,如下所示:

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

但是,xampp在日志(log)中返回错误:

sh: -c: line 1: syntax error near unexpected token `('
sh: -c: line 1: `rm !(*.xml)'

我已经允许xampp通过EXEC向机器发送命令.其他命令,如只删除不符合!()标准的文件,工作正常.

当我通过Linux直接写rm !(*.xml)的时候,终端工作正常.

推荐答案

错误消息是100...

shopt -s extglob和扩展的全局匹配是bash的扩展.

exec函数似乎使用的是POSIXshell ,而不是bash,因此不能直接使用bash特定的代码.

试试像这样的东西

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

或者更好的做法是将您的代码放入带有解释器规范的bash脚本文件中

#!/bin/bash

和使用

exec('/path/to/your_script');

Php相关问答推荐

如何在Woocommerce中禁用机器人添加到推车?

根据在WooCommerce购物车和 checkout 中 Select 的送货方式显示快捷代码内容

根据产品类型显示或隐藏WooCommerce管理产品自定义字段

在Symfony 6.4中将工作流动态添加到服务

WooCommerce短代码,显示特定产品的购物车徽章中的当前数量

使用php ZipArhive类将Zip压缩文件分成多个部分

函数存储到变量中

以编程方式同步 WPML 翻译更改 Woocommerce 产品销售价格

服务器升级到新的mysql版本8.0.34后查询错误

在 WooCommerce 中应用优惠券时显示购物车商品折扣金额

订单完成后创建 WooCommerce 促销代码

使用现有的htaccess的PHP路由脚本

根据WooCommerce中选定的变体重量更改输入数量步值

WooCommerce checkout 流程中基于所选选项添加自定义费用

如何在构建 PHP 类别数组树的递归函数中将父面包屑传递给子项?

PHP header() 是否缓存重定向,如果是,如何防止它这样做?

适当的时区处理 Laravel / Carbon

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段

一个php应用程序可以实例化多个RNG吗

复杂的mysql查询问题