Файл PHP всегда существует ложь

Частные переменные с Открытым интерфейсом

Это использует аккуратный небольшой прием с определением функции самовызова. Все в объекте, который возвращается, доступно в открытом интерфейсе, в то время как все остальное является частным.

var test = function () {
    //private members
    var x = 1;
    var y = function () {
        return x * 2;
    };
    //public interface
    return {
        setx : function (newx) {
            x = newx;
        },
        gety : function () {
            return y();
        }
    }
}();

assert(undefined == test.x);
assert(undefined == test.y);
assert(2 == test.gety());
test.setx(5);
assert(10 == test.gety());
5
задан Jon Seigel 8 March 2010 в 02:42
поделиться

6 ответов

Вероятно, это проблема с правами доступа к файлу. Убедитесь, что файл, который вы тестируете, доступен пользователю _www (который используется для запуска apache {httpd} в Mac OS X).

Возможно, вы можете попробовать проверить файл на / tmp с 777 битами разрешений.

Надеюсь, это поможет.

3
ответ дан 13 December 2019 в 05:37
поделиться

Также проверьте родительский каталог и всех их родителей, чтобы убедиться, что у всех есть доступ на выполнение.

Если вы запускаете это под Apache (а не в командной строке) помните, что он работает под пользователем _www и группой _www в Snow Leopard. Так что это группа, которой нужен доступ.

1
ответ дан 13 December 2019 в 05:37
поделиться

Из руководства по php на file_exists ()

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

Это только предположение, пример кода может прояснить ситуацию.

Другая причина file_exists () может не иметь доступа файл (не относящийся к безопасному режиму):

Примечание: проверка выполняется с использованием реального UID / GID вместо действующего.

Этот сценарий отлично работает на моем Linux-компьютере (это в значительной степени пример, который вы добавили):

<?php
  if (file_exists($_SERVER["SCRIPT_FILENAME"])){
    echo "Found File: ";
  } else {
    echo "No File: ";
  }

  echo $_SERVER["SCRIPT_FILENAME"];
?>
1
ответ дан 13 December 2019 в 05:37
поделиться

Это может помочь:
http://bugs.php.net/bug.php?id=48535

В частности:

Я установил для параметра fastcgi.impersonate в php.ini значение 1 (например, рекомендовано в документации). Если я установлю для него значение 0, он будет работать.

0
ответ дан 13 December 2019 в 05:37
поделиться

Безопасный режим?

Из документации PHP file_exists :

Предупреждение


Эта функция возвращает FALSE для файлов. недоступен из-за безопасного режима ограничения. Однако эти файлы все еще могут быть включены, если они расположен в safe_mode_include_dir.

-1
ответ дан 13 December 2019 в 05:37
поделиться

Я только что столкнулся с этой проблемой и застрял на ней последние пару часов. Ответ заключается в том, что вам нужно указать АБСОЛЮТНЫЙ путь для работы file_exists (). Вы НЕ можете использовать относительные пути, такие как 'dir1 / images / image.jpg' или '../../images/image1.jpg'. Вам необходимо указать /rootdir/subdir/dir1/images/myimage.jpg.

В любом случае это сработало для меня.

8
ответ дан 13 December 2019 в 05:37
поделиться
Другие вопросы по тегам:

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