PHP exec () в Ubuntu - есть ли ограничение на размер аргументов, которые вы можете передать? - PullRequest
3 голосов
/ 01 ноября 2011

Я вижу, как "getconf ARG_MAX" из командной строки возвращает большое число (2 097 152 байта), и аргумент, который я передаю exec, является частью этого (229 650), но мой exec продолжает умирать, и я не могу выяснить почему. Он работает с меньшими параметрами, переданными в него.

Пример кода: $ strReallyLongParamList = 'ARG1 ARG2-IS-200K ARG3 ARG4'; exec ('/ path / to / my / background-process.php'. $ strReallyLongParamList); // вход в систему с помощью background-process.php никогда не происходил ... кажется, код умер при вызове exec

Является ли PHP внутренним ограничением или он просто передает все в Ubuntu?

С тех пор я распределяю свои вызовы exec на более мелкие партии, и все работает великолепно, так что кажется, что я достиг определенного ограничения в PHP exec.

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

эта статья: http://www.in -ulm.de / ~ mascheck / различным / argmax / анализирует проблему с точки зрения оболочки, но дает некоторое представление об основной проблеме, то есть размер ARG_MAX являетсяаргументы плюс окружающая среда.

надеюсь, это поможет.

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

Полагаю, ошибка связана с тем, что вы не можете напрямую выполнить файл PHP:

exec('/path/to/my/background-process.php '.$strReallyLongParamList);

Вам нужно будет сделать что-то вроде следующего, то есть выполнить реальную программу, такую ​​какИнтерпретатор PHP:

exec('php /path/to/your/background-process.php '.$params);

Но, честно говоря, я не считаю хорошей идеей использовать exec для таких задач, это просто слишком большой риск для безопасности, если вы не знаете, что делаете.Что именно вы пытаетесь сделать?

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

любые аргументы переменных, передаваемые в командную строку, должны быть экранированы с помощью escapeshellarg

Я думаю, это должно решить проблему.

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