2017-02-14 91 views
0

Я пытаюсь получить дату, в которую файл был изменен или создан с помощью PHP. Для этого я использую filectime функции, но это дает мне всегда следующую ошибку:Внимание: filectime(): stat failed для пути

Warning: filectime(): stat failed for path

где путь маршрут, в котором я хранящийся файл.

Маршрут что-то похожее на это:

http://MYIP/documents/animals document 1.pdf 
http://MYIP/documents/animals document 2.pdf 
... 

, и я должен заменить URL кодифицировать пространства файла:

$path= str_replace(' ', '%20', $path); 

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

Я что-то упустил?

Заранее благодарен!

+0

http://php.net/manual/en/wrappers.http.php: _ «Поддержка стат(): Нет» _ - вы просто не можете использовать это для HTTP URL-адреса. – CBroe

+1

_ «Я пытаюсь получить дату, в которой файл был изменен или создан с помощью PHP» _, поэтому используйте путь к файловой системе, а не URL-адрес HTTP. – CBroe

ответ

1

filectime Функция ожидает строковый путь в качестве параметра. Это всего лишь функция обертки над использованием Posix stat системный вызов.

Системный вызов:

int stat(const char *pathname, struct stat *buf);

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

Не беспокойтесь об этой «кодификации»! Просто используйте стандартный строковый путь, который вы используете в своей оболочке UNIX, относительно каталога скриптов.

В этом случае просто укажите правильный путь к функции PHP!

filectime("documents/animals document 2.pdf"); 
+1

_ «Вам нужны escape-последовательности для пробелов в пути» _ - нет, вы этого не делаете, а не в файловой системе. – CBroe

+0

@CBroe Ах! Да, ты прав! Спасибо за исправление! Я все еще был в контексте оболочки UNIX, набрав это предложение ...: P – varun

+0

@varun Но IP - мой, но внешний, поэтому мне пришлось получить доступ к файлу с помощью пути: 'IP/animal/animals document 2.pdf '. –