PHP pathinfo как атрибут изображения не работает на сервере - PullRequest
1 голос
/ 08 ноября 2011

Я использую следующий код для сканирования папки на наличие изображений:

<?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 application / x-httpd-php5 .php» на сервер моего клиента для работы функции scandir. Может ли это быть связано? как я могу это исправить?

Я ценю любое предложение.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Как указано в руководстве , ключ filename возвращаемого массива (или PATHINFO_FILENAME) требует php 5.2 или новее.Чтобы выяснить, является ли это проблемой, проверьте, что выводится, изучив исходный код отображаемого HTML-документа.

Кроме того, вам не нужно изменять файл htaccess для работы сценариев php.Вместо этого измените глобальную конфигурацию сервера.

1 голос
/ 08 ноября 2011

Как уже упоминалось в phihag, похоже, что pathinfo () для 'filename' доступна для 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 , как он был создан для этого типа функций.

...