Re: Есть ли другой способ сохранения в файл, который я забыл?
Он имеет ограниченную полезность, но если у вас особенно сложный запрос к базе данных, вы можете записать сериализованный объект обратно в индексированную таблицу базы данных. У вас все еще будут накладные расходы на запрос к базе данных, но это будет простой выбор, в отличие от сложного запроса.
Re: Сохраняется ли файл в безопасности? и дешевый виртуальный хостинг)
Печальный факт - дешевый виртуальный хостинг небезопасен. Насколько вы доверяете 100 500 или 1000 другим людям, которые имеют доступ к вашему серверу? По историческим причинам (по иронии судьбы) в средах общего хостинга PHP / Apache работает как непривилегированный пользователь (PHP работает как модуль Apache). Рациональность безопасности здесь заключается в том, что если мировой процесс apache будет скомпрометирован, эксплуататоры имеют доступ только к непривилегированной учетной записи, которая не может испортить важные системные файлы.
Плохая часть в том, что всякий раз, когда вы пишете в файл с использованием PHP, владельцем этого файла является один и тот же непривилегированный пользователь Apache. Это верно для каждого пользователя в системе, что означает, что любой имеет права на чтение и запись к файлам. Теоретические хакеры в приведенном выше сценарии также будут иметь доступ к файлам.
В PHP также существует постоянная плохая практика - предоставлять каталогам и файлам права доступа к каталогу 777, чтобы позволить непривилегированному пользователю apache записывать файлы, а затем оставлять каталог или файл в этом состоянии. Это дает любому в системе доступ на чтение / запись.
Наконец, вы можете думать, что безвестность спасает вас. «Они никак не могут узнать, где находятся мои секретные файлы кэша», но вы ошибаетесь. Общий хостинг настраивает пользователей в одну группу, и большинство масок файлов по умолчанию дают пользователям вашей группы разрешение на чтение создаваемых вами файлов. SSH в вашу учетную запись общего хостинга когда-нибудь, перейдите вверх по каталогу, и вы обычно можете начать просматривать файлы других пользователей в системе. Это может быть использовано для обнаружения записываемых файлов.
Решения не очень красивые. Некоторые хосты предлагают CGI Wrapper, который позволяет вам запускать PHP как CGI. Преимущество здесь в том, что PHP будет работать как владелец скрипта, что означает, что он будет работать как вы, а не как непривилегированный пользователь. Проблема предотвращена! Новая проблема! Традиционная CGI медленна, как патока в феврале.
Существует FastCGI, но FastCGI привередлив и требует постоянной настройки. Не многие общие хосты предлагают это. Если вы найдете такой, который, возможно, у них будет включен APC, и, возможно, даже сможет предоставить механизм для memcached.