【问题标题】:mogrify resize file name with bracketmogrify 用括号调整文件名
【发布时间】:2011-07-30 07:26:31
【问题描述】:

在 php 中,当调整包含“(”括号的文件名时失败。

我通常会这样做

exec("mogrify -resize {$filewidth}x{$fileheight}! \"$file\"");

但它不适用于带括号的文件名

通过命令行必须像这样转义才能工作。

mogrify -resize 203x126! 53v-slave-only\(2\).png

如何通过exec() 命令为 php 修复它

注意文件名必须使用括号。

谢谢。

【问题讨论】:

    标签: php imagemagick mogrify


    【解决方案1】:

    在使用与命令行配合使用的函数时,请尝试使用escapeshellcmdescapeshellarg

    例如:

    <?php
    $filewidth = escapeshellcmd($filewidth);
    $fileheight = escapeshellcmd($fileheight);
    $file = escapeshellcmd($file);
    
    exec("mogrify -resize {$filewidth}x{$fileheight}! \"$file\"");
    ?>
    

    【讨论】:

    • 不应该file* vars 使用escapeshellarg 而不是escapeshellcmd?然后在调用exec之前用escapeshellcmd包裹整个字符串?
    【解决方案2】:
    $file=str_replace(array('(',')'),array('\\(','\\)'),$file);
    

    【讨论】:

    • 你的意思是我最好在存储之前重命名文件名。?
    • 不,我不知道。根据需要将 ( 替换为 \( 并将其传递给 exec
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    相关资源
    最近更新 更多