Хорошо, что это работает с моим Linux-сервером, но я тестирую свой веб-сайт дома на своем ПК и пытаюсь заставить php выполнить мой скрипт на языке python, и, конечно же, это WINDOWS, только путь изменяется, когда Im на моей Linux-машине.
$pyscript = 'C:\\wamp\\www\\testing\\scripts\\imageHandle.py'; $python = 'C:\\Python27\\python.exe'; $filePath = 'C:\\wamp\\www\\testing\\uploads\\thumbs\\10-05-2012-523.jpeg' exec('$python $pyscript $filePath', $output, $return );
это работает на моей Linux-машине, но не на моем сервере тестирования Windows. Как это сделать для окон? О, и это также работает при запуске непосредственно из командной строки в окнах
РЕДАКТИРОВАТЬ:
ЭТО РЕШЕНИЕ, как вы можете прочитать в ответ.
$cmd = "$python $pyscript $filePath"; exec("$cmd", $output);
работает как шарм. Изменены отдельные тики в два раза.
Мне показалось странным, что filePath из C:\\wamp\\....
будет работать на машине Linux. Во всяком случае, вы пробовали НЕ избегать косых черт?
Эта проблема может быть связана с несколькими вещами, включая специфичные для ОС методы реализации различных функций выполнения программ. Я рекомендую просто переходить к различным параметрам, я всегда добавляю команду в одну переменную, а затем распечатываю переменную, чтобы я мог видеть, что я собираюсь запустить, если вы видели две слэши, тогда вы, возможно, знаете, что нет нужно попытаться избежать косой черты, однако, не печатая ее на экране, вы не знаете.
Попробуйте выполнить другие функции выполнения процесса, чтобы увидеть, что работает для вас. http://www.php.net/manual/en/ref.exec.php
Тот, который я нашел, работает MOST, как запуск его в командной строке, является оператором backtick, а затем – system
попробуйте что-то вроде этого.
$pyscript = 'C:\\wamp\\www\\testing\\scripts\\imageHandle.py'; $python = 'C:\\Python27\\python.exe'; $filePath = 'C:\\wamp\\www\\testing\\uploads\\thumbs\\10-05-2012-523.jpeg' $cmd = "$python $pyscript $filePath"; echo $cmd; `$cmd` $pyscript = 'C:\wamp\www\testing\scripts\imageHandle.py'; $python = 'C:\Python27\python.exe'; $filePath = 'C:\wamp\www\testing\uploads\thumbs\10-05-2012-523.jpeg' $cmd = "$python $pyscript $filePath"; echo $cmd; `$cmd`
EDIT: AHHH! Я просто понял это, вы окружаете свою команду одиночными клещами », что означает, что переменная внутри не заменяется. Вместо этого используйте двойные кавычки. Это решит проблему, но я все же рекомендую повторить команду перед ее запуском, чтобы вы увидели команду, которую вы выполняете, и вы сможете определить проблему, подобную этой.