PHP pathinfo作为图像属性在服务器上不起作用


PHP pathinfo as image attribute not working on server

我使用以下代码扫描文件夹中的图像:

<?php
    $dir = 'img/product/subproduct/cat/';
    $scan = scandir($dir);
        for ($i = 0; $i<count($scan); $i++) {
            $path_parts = pathinfo($scan[$i]); // to remove file extension
            if ($scan[$i] != '.' && $scan[$i] != '..') {
                echo '<img src="' . $dir . $scan[$i] . '" alt="' . $path_parts['filename'] . '" width="50" height="50" />';
            }
        };
?>

然后显示被点击图片的放大版本并添加alt属性作为标题:

$('#id img').click(function () {
    var imageName = $(this).attr('alt');
    var chopped = imageName.split('.');
    $('#titlel').empty();
    $('#titlel')
        .prepend(chopped[0]);
    $img = $(this);
    $('#idBig img').attr('src', $img.attr('src'));
});

这在本地主机和我自己的服务器上都有效,但是当我将其移动到我的客户端服务器时,当我单击图像时标题不会出现。

值得注意的是,我必须添加一个.htaccess文件与行"AddHandler应用程序/x-httpd-php5 .php"到我的客户端的服务器,以使scandir函数工作。这两者有关联吗?我怎样才能解决这个问题?

如手册所述,返回数组的filename键(或PATHINFO_FILENAME)需要php 5.2或更新版本。要确定这是否是问题所在,可以通过检查呈现的HTML文档的源代码来检查输出的内容。

同样,你不需要修改htaccess文件来让php脚本工作。请修改全局服务器配置。

正如phihag提到的,看起来'filename'的pathinfo()在PHP>= 5.2.0中可用,所以如果您运行的是早期版本,您可以尝试(未测试):

$path_parts = pathinfo($scan[$i]);
// Subtract strlen of extension from strlen of entire filename
//  (+1 for '.')
$filenameStrLen = (strlen($path_parts['basename']) - strlen($path_parts['extension'])) + 1;
// Substr basename from 0 to strlen
$filenameWithNoExtension = substr($path_parts['basename'], 0, $filenameStrLen);    

你可能想看看DirectoryIterator,因为它是为这种功能构建的。