Reputation: 4603
I wanted to run some PHP right on my Mac, uncommented httpd.conf, activated web sharing, installed MySQL etc. I can't seem to find my PHP files, most importantly, PHP.ini.
On my old machine it was located in /usr/local/php5/lib But php5 directory doesn't exist in /usr/local..
Do I need to get a package or am I looking in the incorrect place?
Running OS X 10.7.3, PHP 5.3.8, Apache/2.2.21
Upvotes: 328
Views: 568067
Reputation: 852
1- Find .ini
location path
Open Terminal and run command
php --ini
2- copy this path /usr/local/etc/php/7.4/php.ini
and open it by command
nano /usr/local/etc/php/7.4/php.ini
3- Make changes and Quit with the keyboard combination Ctrl+X to exit nano
4- run apachectl restart
after finish
Upvotes: 10
Reputation: 51
On OSX/MacOS do the following in a Terminal window:
Run php --ini
at the prompt by typing it and pressing enter
Reports something like: Configuration File (php.ini) Path: /etc Loaded Configuration File: (none) Scan for additional .ini files in: /Library/Server/Web/Config/php Additional .ini files parsed: (none)
...this is because in /etc there is a file called /etc/php.ini.default as an example and to show it is not in use. You need to copy that file to the name php expects so that you can edit it, like this:
Type:
$ sudo cp /etc/php.ini.default /etc/php.ini (and enter your password)
...then you will see if you run php --ini
again that it now sees your new file:
Typing this: php --ini
at the prompt should report this:
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /Library/Server/Web/Config/php
Additional .ini files parsed: (none)
...now edit /etc/php.ini - you want to make sure the following lines (NOT the same line starting with a semi-colon ';') are exactly as follows:
log_errors = On
(this will turn the logging engine on)
Then, in this section:
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
If you want to log to the syslog (or Windows Event Log on Windows) then ;error_log = syslog
should become error_log = syslog
However, if as you say, you want to log to a file, you uncomment by removing the leading semi colon to make ;error_log = php_errors.log
become error_log = php_errors.log
or using a full path to place it where you want.
Good luck
Upvotes: 3
Reputation: 2787
Here is the complete method to modify correct php.ini
in mac.
php --ini
, this will give something like below: Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File: /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.4/conf.d/ext-opcache.ini
php.ini
via sudo vi /usr/local/etc/php/7.4/php.ini
:wq
sudo apachectl restart
You are changes should be now reflected, if done correctly :)
Upvotes: -1
Reputation: 18125
To locate the ini file on your machine, open Terminal.app
and run the following command:
php --ini
If you need a template for Lion, try this.
Upvotes: 559
Reputation: 27301
I have more than once instance of PHP running so the other answers did not work for me. This did:
Create a PHP file and open its local url in your browser:
<?php phpinfo(); ?>
The PHP.INI path will be listed close to the top.
Upvotes: 16
Reputation: 10380
Run phpinfo()
from any file and it tells you where it is. Here is a screenshot.
Upvotes: 25
Reputation: 8236
Answers from @Cronk and @Justin got me close on Mac OS X 10.9 Mavericks. In fact, on my system the /etc/php.ini
file was missing completely, and it wasn't until I ran phpinfo()
on the web server that I observed there was no configuration file. Copying the file from /etc/php.ini.default
and adding the fully qualified path to the mcrypt.so
library to the config file solved the problem:
cp /etc/php.ini.default /etc/php.ini
Then in /etc/php.ini
add the following line (using the correct path to your mcrypt.so
file):
extension="/usr/local/Cellar/php54-mcrypt/5.4.29/mcrypt.so"
Then restart Apache2:
apachectl restart
Upvotes: 29
Reputation: 473
This is rather old thread, but I would like to add a further clarification.
If you have a system that has multiple PHP installations (like mine did) the results you get from using the command line tools MAY BE different than what is actually used by the web server. If you are interested in what PHP is being used by the web server, only use the information gathered from a web page that uses the 'phpinfo()' function.
For example, on my system the versions reported by the two different methods were:
Command line: 5.3.26
Web: 5.3.13
For the php.ini file path things were different, too:
Command line: /private/etc/php.ini
Web: /long/path/to/the/file/php.ini
You can find all the possible php.ini files using this:
find / -name php.ini 2>&1 | grep -v "denied" | grep -v "directory"
(the '2>&1' and 'grep' elements just restrict the output of the command to useful information, i.e. get rid of error messages)
On my system I found 3 INI files. Because I was interested in what the web server was using I knew that I should use the path returned from the web-page results. I made my changes to the php.ini file that was listed there, restarted apache, and re-ran the web page; the new edits were shown there.
To restart apache:
sudo apachectl -k restart
-- J
Upvotes: 3
Reputation: 2379
You run php_info() and see line bellow :)
Loaded Configuration File /Applications/XAMPP/xamppfiles/etc/php.ini
Upvotes: -1
Reputation: 6851
I start with the 'Hello World!', once I get that displaying in my browser I throw a phpinfo();
in there and you can see all of the things. Tells you which configurations are loaded, everything.
<?php
echo 'Hello World!';
phpinfo();
Upvotes: 1
Reputation: 2158
In terminal do php -i | grep php.ini
.
Should give you some clues ;)
Upvotes: 58
Reputation: 281
As pointed out, the php --ini
command will tell you where PHP is expecting to find the php.ini file.
For a standard installation, it's likely to be looking for /etc/php.ini
If you've used macports then PHP may be looking for /opt/local/etc/php5/php.ini
Upvotes: 28
Reputation: 5647
You should find it in /private/etc if it exists, otherwise:
sudo cp /private/etc/php.ini.default /private/etc/php.ini
Upvotes: 415