【问题标题】:PHP pathinfo as image attribute not working on serverPHP pathinfo作为图像属性在服务器上不起作用
【发布时间】:2011-12-23 22:37:22
【问题描述】:

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

<?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'));
});

这适用于本地主机和我自己的服务器,但是一旦我将它移动到我的客户端的服务器,当我单击图像时标题就不会出现。

值得注意的是,我必须将带有“AddHandler application/x-httpd-php5 .php”行的 .htaccess 文件添加到我的客户端服务器,以便scandir 函数工作。这可能有关系吗?我该如何解决这个问题?

感谢任何建议。

【问题讨论】:

  • 有什么错误吗?问题出在哪里,在 PHP 中还是在 jQuery 中?你试过调试吗?
  • 其实并没有报错,页面渲染的很好,除了这个缺失的信息。

标签: php jquery pathinfo


【解决方案1】:

manual 中所述,返回数组的filename 键(或PATHINFO_FILENAME)需要php 5.2 或更高版本。要找出是否是问题所在,请通过检查呈现的 HTML 文档的源代码来检查输出的内容。

此外,您不需要修改 htaccess 文件以使 php 脚本正常工作。而是修改全局服务器配置。

【讨论】:

  • 我忘了说,HTML 将 alt 属性呈现为空白但没有出现错误,就好像我在原始文件中将其留空一样。
  • @brunn error_reportingdisplay_errors 的值是多少?出现问题的服务器上运行的 php 版本是什么?
  • PHP 版本是 5.1.6,在 error_reporting 之后我得到:“未定义索引:文件名”。
【解决方案2】:

正如 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,因为它是为此类功能而构建的。

【讨论】:

  • 您的建议效果很好,问题解决了。我将查看您提供的链接以了解更多信息。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
相关资源
最近更新 更多