Details
Description
On Windows, using trunk or release-1.9 branch:
>zf create project mytest
>cd mytest
>zf create controller foo
Generates this error:
An Error Has Occurred A project profile was not found. Zend Framework Command Line Console Tool v1.9.0a1 Details for action "Create" and provider "Controller" Controller zf create controller name index-action-included[=1] module
The problem is on line 126 of Zend/Tool/Project/Provider/Abstract.php:
$projectDirectoryAssembled = DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray);
On Windows, this creates a $projectDirectoryAssembled of \C:\www\mytest for me!
Clearly the leading \ is wrong for Windows. Suggested patch:
Index: Zend/Tool/Project/Provider/Abstract.php =================================================================== --- Zend/Tool/Project/Provider/Abstract.php (revision 17369) +++ Zend/Tool/Project/Provider/Abstract.php (working copy) @@ -123,7 +123,11 @@ $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR)); while ($parentDirectoriesArray) { - $projectDirectoryAssembled = DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); + $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); + if(substr(PHP_OS, 0, 3) != 'WIN') { + // prepend the DIRECTORY_SEPARATOR only if not on Windows + $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled; + } $profile->setAttribute('projectDirectory', $projectDirectoryAssembled); if ($profile->isLoadableFromFile()) {Index: Zend/Tool/Project/Provider/Abstract.php =================================================================== --- Zend/Tool/Project/Provider/Abstract.php (revision 17369) +++ Zend/Tool/Project/Provider/Abstract.php (working copy) @@ -123,7 +123,11 @@ $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR)); while ($parentDirectoriesArray) { - $projectDirectoryAssembled = DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); + $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); + if(substr(PHP_OS, 0, 3) != 'WIN') { + // prepend the DIRECTORY_SEPARATOR only if not on Windows + $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled; + } $profile->setAttribute('projectDirectory', $projectDirectoryAssembled); if ($profile->isLoadableFromFile()) {