Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom php.ini file in when executing 'php' as a shell script

Tags:

php

I'm running php as a shell script.

(I am not sure if "shell script" is correct. The file starts with #!/usr/bin/php.)

This works great. But the MongoDB class doesn't get loaded as the correct php.ini file (having extension=mongo.so) is not used.

How do I make it use that php.ini file?

I already tried #!/usr/bin/php -c /usr/local/lib/php.ini

But I still get the same error - Fatal error: Class 'Mongo' not found

What can be done?

like image 762
kapeels Avatar asked Sep 06 '25 05:09

kapeels


1 Answers

Try putting php.ini in the same folder as the php binary. It seems to look there first.

I know this because I used a very powerful and useful command-line program called strace to show me what's really going on behind my back

$ strace -o strace.log php --version
$ grep php.ini strace.log

Strace digs out kernel (system) calls that your program makes and dumps the output into the file specified after -o

It's easy to use grep to search for occurrences of php.ini in this log. It's pretty obvious looking at the following typical response to see what is going on.

open("/usr/bin/php.ini", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)          = 3
lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69105, ...}) = 0
like image 119
thomas-peter Avatar answered Sep 09 '25 02:09

thomas-peter