Проблемы с PHP в mkdir в Windows - PullRequest
7 голосов
/ 09 января 2012

Я работаю над программой командной строки на PHP, и у меня возникли проблемы, моя первая проблема - когда я вызываю PHP mkdir(), он дает мне эту ошибку

Warning: mkdir(): No such file or directory in 
E:\Server\_ImageOptimize\OptimizeImage.php
on line 196

Затем я читаю вPHP пишет комментарий пользователя, который говорит, что косая черта / не работает с этим методом в Windows, но в Unix.

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

Вот код ниже, может кто-то помочь мне разобраться, пожалуйста,

// I tried both of these below
$tmp_path = '\tmp\e0bf7d6';
//$tmp_path = '/tmp/e0bf7d6';

echo $tmp_path;

mkdir($tmp_path);

Ответы [ 2 ]

9 голосов
/ 09 января 2012

Фактическая проблема заключается в том, что mkdir() создает только один подкаталог на вызов, но вы передали ему путь из двух несуществующих каталогов.Обычно вы должны делать это шаг за шагом:

mkdir("/tmp");
mkdir("/tmp/e0b093u209");
mkdir("/tmp/e0b093u209/thirddir");

Или использовать ярлык третьего параметра:

mkdir("/tmp/e0b093u209", 0777, TRUE);
3 голосов
/ 09 января 2012

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

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

Это должно исправить проблему с разделителем. Я также попробовал бы рекурсивное свойство, найденное в mkdir, которое позволит вам создать вложенную структуру. Пожалуйста, смотрите следующие, http://php.net/manual/en/function.mkdir.php

Вы заметите, что вам нужно вызвать mkdir, как показано ниже.

mkdir ($path, $mode, true)
...