Предупреждение: exec (): невозможно использовать fork в PHP

Я использую php 5 apache на сервере Windows 2008, я отключил IIS.

Я использую команду exec в моем PHP-скрипте, и он работает нормально, но сегодня я получил сообщение об ошибке:

Warning: exec(): Unable to fork 

Я дал разрешения на cmd.exe в папке C:\Windows\System32 но это не устранило проблему.

В 64-битных окнах (например, сервер 2008) существует папка c: \ windows \ syswow64, которая содержит все исполняемые файлы / dll, которые требуются 32-разрядным приложением. установленный на вашей 64-битной машине. Убедитесь, что ваш необходимый 32-разрядный файл .exe / dll и т. Д. Помещается в эту папку. если вы не можете найти его там, вам придется разместить 32-битную версию требуемого .exe / dll. Таким образом, это может быть использовано приложением / процессом yopur.

Теперь, когда ваше 32-битное приложение / процесс выполняется, окна автоматически перенаправляют ваш процесс для выполнения требуемого приложения в папке syswow64.

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

В частности, какие разрешения вы дали кому? Вероятно, не нужным пользователю.

Запустите этот скрипт php:

 echo 'Script is executed by: ' . get_current_user() . getmygid(); 

Он расскажет вам, какой пользователь запускает скрипты PHP и, следовательно, какой пользователь предоставляет разрешения для cmd.exe .

У меня была эта проблема, но в конечном итоге она могла ее решить. Проблема была связана с тем, как я случайно установил cmd.exe для «Запуск от имени администратора» по умолчанию. Я говорю «случайно», поскольку я думал, что устанавливаю только параметры совместимости ярлыка на панели задач, но оказалось, что он устанавливает совместимость самого .exe. В любом случае я отключил это, удалив раздел реестра:

 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 

После этого все снова начало работать.