1
0
mirror of https://github.com/danog/class-finder.git synced 2024-11-26 20:14:59 +01:00
class-finder/docs/exceptions/filesExecNotAvailable.md
2020-10-11 18:24:12 +02:00

1.5 KiB

FilesFinder requires that exec() is available.

Example PHP:

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use danog\ClassFinder\ClassFinder;

ClassFinder::enableExperimentalFilesSupport();
$classes = ClassFinder::getClassesInNamespace('Acme\Foo\Bar');

Results in this exception:

FilesFinder requires that exec() is available. Check your php.ini to see if it is disabled.

When running ClassFinder with support for autoloaded classes in files, ClassFinder must execute the included file in a shell to determine any defined classes in it. exec() is used to accomplish this. In some environments, hosts may intentionally disable the use exec() as a security or performance precaution.

Possible Solution 1

Disable files support.

The majority of users won't need files support. If you've copy / pasted a snippet (including from documentation here) that enabled it, you should remove it and see if you're part of the 99% that doesn't need this feature. You may also want to explicitly disable it:

ClassFinder::disableExperimentalFilesSupport();
$classes = ClassFinder::getClassesInNamespace('Acme\Foo\Bar');

Possible Solution 2

Ensure exec() is available to PHP.

Find your php.ini file and look for a configuration value called disabled_functions:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen

Remove exec from the list and restart your webserver.