Частные переменные с Открытым интерфейсом
Это использует аккуратный небольшой прием с определением функции самовызова. Все в объекте, который возвращается, доступно в открытом интерфейсе, в то время как все остальное является частным.
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());
Вероятно, это проблема с правами доступа к файлу. Убедитесь, что файл, который вы тестируете, доступен пользователю _www
(который используется для запуска apache {httpd} в Mac OS X).
Возможно, вы можете попробовать проверить файл на / tmp с 777 битами разрешений.
Надеюсь, это поможет.
Также проверьте родительский каталог и всех их родителей, чтобы убедиться, что у всех есть доступ на выполнение.
Если вы запускаете это под Apache (а не в командной строке) помните, что он работает под пользователем _www
и группой _www
в Snow Leopard. Так что это группа, которой нужен доступ.
Из руководства по 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"];
?>
Это может помочь:
http://bugs.php.net/bug.php?id=48535
В частности:
Я установил для параметра fastcgi.impersonate в php.ini значение 1 (например, рекомендовано в документации). Если я установлю для него значение 0, он будет работать.
Безопасный режим?
Из документации PHP file_exists :
Предупреждение
Эта функция возвращает FALSE для файлов. недоступен из-за безопасного режима ограничения. Однако эти файлы все еще могут быть включены, если они расположен в safe_mode_include_dir.
Я только что столкнулся с этой проблемой и застрял на ней последние пару часов. Ответ заключается в том, что вам нужно указать АБСОЛЮТНЫЙ путь для работы file_exists (). Вы НЕ можете использовать относительные пути, такие как 'dir1 / images / image.jpg' или '../../images/image1.jpg'. Вам необходимо указать /rootdir/subdir/dir1/images/myimage.jpg.
В любом случае это сработало для меня.