PSV Elicitor

### What It Does ###
PSV Elicitor determines:
- Which PHP functions a project uses.
- The minimum and maximum PHP version required for the script to run.


### How It Works ###
- Scans for PHP files in the project folder.
- Filters out files that do not contain any PHP function names as strings (e.g., 'mysql_db_query'), reducing the number of files scanned in the next step.
- Strips comments and most whitespace from the files to improve performance.
- Scans each PHP file for occurrences of known PHP functions.
- Records each match along with the character before and the two characters after the function name (e.g., ';mysql_db_query($').
- Eliminates false positives (e.g., 'Email($' is not a function call).
- Removes duplicates, leaving only the unique function names used in the project.
- Checks version compatibility for each function (e.g., mysql_db_query() was introduced in PHP 4 but deprecated in PHP 5.0.3).
- Displays the results, including:
  - All functions used in this project.
  - The lowest PHP version required.
  - Any deprecated functions in use.

### Requirements ###
- A web server or web space with PHP installed.
- A web browser to view the results.

### Installation ###
- Unzip the PSV Elicitor archive.
- In psv-elicitor.ini.php, define the path to your project.
- Upload the psv-elicitor folder to your web server.
- Navigate to the folder in your web browser.
- Waiton large projects, this may take several minutes.

### Important Note ###
PSV Elicitor attempts to increase the maximum execution time to 9999 seconds.
If you encounter the error:
  Fatal error: Maximum execution time of 30 seconds exceeded
your server does not allow changing the execution time limit.
For large projects, you may need to:
- Adjust the max_execution_time setting in your php.ini file, or
- Run the script in smaller batches.

### Optional Additions (if helpful) ###
Security Note: Use this tool only in trusted environments, as it processes file contents and regex patterns.
Performance Tip: For very large projects, consider optimising the script (e.g., caching or using a proper PHP parser).