Набор полномочий к 777 и файл, все еще записываемый

Если Ваш абстрактный класс будет содержать конкретную функциональность, которая имеет бизнес-возможность, то я буду обычно тестировать его непосредственно путем создания теста дважды, который гасит абстрактные данные, или при помощи платформы насмешки, чтобы сделать это для меня. Какой, который я выбираю, во многом зависит от того, нужно ли мне к определенным для теста записи реализациям абстрактных методов или нет.

наиболее распространенный сценарий, в котором я должен сделать это, - когда я использую Шаблонный шаблон Метода , такой как тогда, когда я создаю своего рода расширяемую платформу, которая будет использоваться третьей стороной. В этом случае абстрактный класс - то, что определяет алгоритм, который я хочу протестировать, таким образом, имеет больше смысла тестировать абстрактную основу, чем определенная реализация.

Однако я думаю, что важно, чтобы эти тесты сфокусировались на конкретные реализации реальной бизнес-логики [только 115]; Вы не были должны модульный тест детали реализации из абстрактного класса, потому что Вы закончите с хрупкими тестами.

5
задан Richard Knop 11 August 2009 в 13:07
поделиться

2 ответа

Я предполагаю, что Apache работает как другой пользователь / группа, чем пользователь / группа, владеющая файлом. В этом случае сам файл должен быть 0777 .

public должен быть 0777 только в том случае, если вы планируете добавлять файлы в папку с помощью PHP. Даже если сама папка не 0777 , если файл есть и в папке есть не менее 5 для пользователя ( чтение / выполнение ), вы должны быть возможность записи в файл.

В конечном итоге ваше файловое дерево должно выглядеть так:

public_html
    public
        file.txt  0777

Естественно, вы выиграли ' нельзя изменить эти разрешения с помощью PHP, но вы можете сделать это с помощью FTP-клиента.

Если он по-прежнему не работает, возможно, PHP работает в безопасном режиме или вы можете использовать такое расширение, как PHP Suhosin. Вы можете получить лучший результат, изменив владельца файла на того же пользователя / группу, которая запускает скрипт.

Чтобы получить идентификатор пользователя / группы исполняющего пользователя, вы можете использовать следующее:

<?php
echo getmyuid().':'.getmygid(); //ex:. 0:0
?>

Затем вы можно использовать chown (в терминале), чтобы изменить владельца файла:

> chown 0:0 file.txt
8
ответ дан 13 December 2019 в 19:32
поделиться

Вы должны изменить файл chmod сразу после его создания.

function Doo_Chmod($path, $chmod = null)
{
    if (file_exists($path) === true)
    {
        if (is_null($chmod) === true)
        {
            $chmod = (is_file($path) === true) ? 644 : 755;

            if (in_array(get_current_user(), array('apache', 'httpd', 'nobody', 'system', 'webdaemon', 'www', 'www-data')) === true)
            {
                $chmod += 22;
            }
        }

        return chmod($path, octdec(intval($chmod)));
    }

    return false;
}
1
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: