2013-03-13 4 views
0

Привет, есть ли способ проверить, существует ли файл .exe по заданному пути или нет. У меня есть установка ImageMagic. У меня есть путь convert.exe магии изображения. Мне нужно проверить, что в заданном пути существует convert.exe. Я реализовалКак проверить, существует ли файл .exe в php

$settingFileContent = file_get_contents($settingFilePath); 
     // print_r($settingFileContent); 
     $allPaths = unserialize(stripslashes($settingFileContent)); 

if (isset($allPaths['IMAGE_CONVERT_EXE'])) { 
       //cho $allPaths['IMAGE_CONVERT_EXE']; 
       if (file_exists($allPaths['IMAGE_CONVERT_EXE'])) { 
        $analysisResultObj->level = ENUM_SUCCESS; 
       } else { 
        $analysisResultObj->level = ENUM_ERROR; 
        $analysisResultObj->infoText = "Image Magic convert.ext has wrong path"; 
       Logger::getLogger('Application')->error('Image Magic convert.ext has wrong path'); 
       } 
      } 

я могу изменить значение $allPaths['IMAGE_CONVERT_EXE'] в файле. Когда я перехожу к неправильному значению даже в этом условии, он возвращает true.

+0

странно, попробуйте использовать is_file() и посмотреть, что это результат? – 2013-03-13 11:26:29

+0

В первом блоке кода отсутствует «после .exe». – Ghigo

+0

Тот же результат :-( –

ответ

1

На основе documentation комментарий конкретно о PHP на Windows, я предполагаю, что (и давайте уясним: все в PHP догадка) попробуйте это:

$file = 'd:/somfolder/imagemagic/convert.ext' 
if(file_exists($file)) { 
    // should be false 
} 

На основе вашего фактического кода у вас пробовал:

$file = $allPaths['IMAGE_CONVERT_EXE']; 
if(file_exists($file)) { 
    // should be false 
} 

Глядя на документации кто-то заметил о том, эта же проблема на Windows, и будучи не в состоянии вернуть правильный результат при конкатенации строковых значений. Пока вы не объединяете значения строк вместе, по крайней мере, стоит сделать так, чтобы не было ничего странного.

+0

ничего в php - это предположение, если вы знаете, что делаете. Мне не нравится «волшебный» подход – Ghigo

+0

Прочитайте документацию, это ** ** Предполагается. – cfeduke

+0

Кстати, в фактическом коде я использую переменную –

0

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

<?php  
    echo extension_loaded('imagick'); 
?> 

Кроме того, вы можете получить представление о ваших установленных расширений через

<?php 
    print_r(get_loaded_extensions()); 
?> 
+1

Проблема (предполагаемая) связана с неправильной работой файла_exists(). – Ghigo

+0

Это действительное решение проблемы, заданной вопросомчиком – cfeduke