О функции exec () в PHP - PullRequest
       6

О функции exec () в PHP

2 голосов
/ 25 ноября 2011

Мне нужна небольшая информация о выполнении файла .exe с использованием сценария PHP. Я прочитал, что можно выполнить файл .exe, используя exec () или passthru () или echo system ().

Можно ли запустить файл .exe, хранящийся на моем компьютере с Windows, скажем, в каталоге C: или файл .exe нужно сохранить на веб-сервере, чтобы запустить его через скрипт php.

Если это так, мне нужно указать путь к файлу .exe для функции exec (), например: file.exe хранится в C: \ Programs \ mydocs \ file.exe.

Могу ли я сохранить этот путь в переменной типа

$path =  C:\Programs\mydocs\file.exe;

и передать его как echo exec ($ path);

Множество вопросов, я бы хотел узнать мнение PHP profis.

Спасибо

Ответы [ 6 ]

6 голосов
/ 25 ноября 2011

Можно ли запустить файл .exe, хранящийся на моем компьютере с Windows, скажем, в каталоге C: или файл .exe нужно сохранить на веб-сервере, чтобы запустить его через скрипт php.

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

Если вы пытаетесь делать то, что, я думаю, вы пытаетесь сделать, чтобудет выполнять команду на компьютере пользователя, что мешает кому-либо использовать:

exec('format c:');

и форматировать диски C своих посетителей?


Могу ли я сохранить этопуть в переменной типа

$path = C:\Programs\mydocs\file.exe;

и передать его как echo exec ($ path);

Это даст вам синтаксическую ошибку, вы 'Вам понадобятся цитаты:

$path = 'C:\Programs\mydocs\file.exe';
3 голосов
/ 25 ноября 2011

Нет, ваш пример - синтаксическая ошибка

Да, если вы заключите строку в кавычки: -

$path = 'C:\Programs\mydocs\file.exe';
1 голос
/ 25 ноября 2011

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

$path = 'C:\Programs\mydocs\file.exe';

или двойные кавычки

$path = "C:\Programs\mydocs\file.exe";
1 голос
/ 25 ноября 2011

Ваш вопрос не совсем ясен о том, где именно работает ваш PHP-скрипт. Если он работает на веб-сервере, который не является вашей рабочей станцией, то просто нет; Вы не можете открыть локальное приложение через PHP, запущенный на другом сервере. Приложение, которое вы хотите запустить, должно быть на том же сервере, что и скрипт PHP.

Тем не менее, если вы хотите запустить приложение на локальной рабочей станции или на сервере, то это просто:

exec('C:\path\to\program.exe');

Обязательно используйте одинарные кавычки ('C: \ path \ to \ program.exe') или двойные обратные косые черты с двойными кавычками ("C: \ path \ to \ program.exe"). Одиночные кавычки немного более эффективны и более уместны в этом случае.

0 голосов
/ 25 ноября 2011

В зависимости от системы безопасности * на сервере вы, вероятно, сможете делать то, что хотите.

Однако, учитывая, что вы не знаете много о синтаксисе PHP, я сомневаюсь, что вам стоит поиграть с exec().

*, например suexec или chroot apache , или , включающий безопасный режим на PHP или запускающий его как отдельную службу (на окнах) . Вы заметили, что многое может пойти не так?

0 голосов
/ 25 ноября 2011

Файл можно выполнить только в том случае, если он находится на компьютере сервера и процесс сервера имеет соответствующие права на доступ к нему / его выполнение.Вы не можете выполнять файлы на машине удаленного пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...