清理 URL 生成器 Symfony2 在开发中工作但不在生产中

Clean URL generator Symfony2 working in dev but not in prod

我在 Symfony 2.6 中使用此代码作为干净的 URL 生成器:

namespace AppBundle\Utility;

class Utility {

    public static function getSlug($string, $separator = '-')
    {
        // Source: http://cubiq.org/the-perfect-php-clean-url-generator
        $slug = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
        $slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);
        $slug = strtolower(trim($slug, $separator));
        $slug = preg_replace("/[\/_|+ -]+/", $separator, $slug);

        return $slug;
    }
}

它在我的开发环境中运行良好,带有特殊字符,但在我的生产环境(我的服务器)中却不行。它不会改变像 á é ñ % 这样的字符,它们只是消失了。例子"Artículo año 2000",显示:"artculo-ao-2000".

我已经在 CentOS 5.11 中安装了 PHP 5.5.23,如果我输入 "php app/check.php" 一切都很好,但它只建议使用 PHP 加速器。

我尝试上传一个带有特殊字符 /holá.html 的文件,但效果很好。

我不知道还能做什么。是不是prod环境配置的问题?

iconv() 需要正确的 setlocale();。确保你没有在环境之间改变它,如果你的开发机器不同于生产机器,检查你是否安装了正确的语言环境。