PHP Warning: Exec() Unable to Fork

PHP Warning: exec() unable to fork

Process limit

"Is there a process limit I should look into"

It's suspected somebody (system admin?) set limitation of max user process. Could you try this?

$ ulimit -a
....
....
max user processes (-u) 16384
....

Run preceding command in PHP. Something like :

echo system("ulimit -a");

I searched whether php.ini or httpd.conf has this limit, but I couldn't find it.

Error Handling

"even a better way to handle these processes as to get around the error all together?"

The third parameter of exec() returns exit code of $cmd. 0 for success, non zero for error code. Refer to http://php.net/function.exec .

exec($cmd, &$output, &$ret_val);

if ($ret_val != 0)
{
// do stuff here
}
else
{
echo "success\n";
}

Warning: exec(): Unable to fork in PHP

In 64-bit windows (e.g server 2008), theres a folder named c:\windows\syswow64, that contains all executables/dll, that are required by a 32 bit app. installed on your 64-bit machine.
Make sure your required 32-bit .exe/dll etc is placed in that folder.
if you cant find it there you will have to put a 32-bit version of the required .exe/dll
there.So this can used by yopur app/process.

Now when your 32-bit application/process executes, windows will automatically redirect your process to execute required app in syswow64 folder.

Hopefully that should resolve your compatibility issue.

Warning: exec() [function.exec]: Unable to fork on shared hosting

shared hosting systems disable some commands for security reasons , you need to work around that , use native php for what you want to do, open the directory and read its content using php itself.

system and exec are usually completely disabled or partially limited.

if you are interested here is a simple code to get directory content :

if (is_dir($base) && is_readable($base)) {

if ($handle = opendir($base)) {
$base .= '/';
while (false !== ($entry = readdir($handle))) {
//$entry is a file or directory including `.` and `..`
}
closedir($handle);
}

}

What does the Unable to fork error mean?

Forking in this case, means the operation to create a new process using the fork() system call. fork() usually fails because necessary system resources are exhausted, it is likely that memory limits or the maximum number of open processes per system is reached.



Related Topics



Leave a reply



Submit