Cannot update php.ini in Mac OS Lion - php

Something is very wrong in my php/apache setup in Mac OS Lion.
If I change /private/etc/php.ini then I do sudo apachectl -k restart, the changes are not reflected.
After I do sudo apachectl -k stop, I can still connect to localhost in browser, and my php runs as usual.
I've even tried emptying /private/etc/php.ini and restart the apache server, but still nothing happened.
In phpinfo, value of Loaded Configuration File is /private/etc/php.ini
Did I miss anything?

if you have MAMP then just change the php.ini file in the MAMP folder with the php version you use.
If not then, try the /etc/php.ini with a sudo vim command. You won't be able to make the changes if you don't access the ini as sudo.
That was my problem earlier when I was trying to get xdebug working, I had to edit the php as super user.

Related

CentOS Linux release 8.0.1905 not taking change of php.ini

I want to remove output_buffering and want to make change to memory_limit by editing etc/php.ini file
But none of my changes are taking effect.
After editing etc/php.ini file as a super user. I've restarted httpd.service using following command
sudo systemctl restart httpd.service
I am using centOS 8
[root#backend adminuser]# cat /etc/*release
CentOS Linux release 8.0.1905 (Core)
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
CentOS Linux release 8.0.1905 (Core)
CentOS Linux release 8.0.1905 (Core)
php-common packages are as below
[root#backend adminuser]# rpm -qc php-common
/etc/php-zts.d/20-bz2.ini
/etc/php-zts.d/20-calendar.ini
/etc/php-zts.d/20-ctype.ini
/etc/php-zts.d/20-curl.ini
/etc/php-zts.d/20-exif.ini
/etc/php-zts.d/20-fileinfo.ini
/etc/php-zts.d/20-ftp.ini
/etc/php-zts.d/20-gettext.ini
/etc/php-zts.d/20-iconv.ini
/etc/php-zts.d/20-phar.ini
/etc/php-zts.d/20-sockets.ini
/etc/php-zts.d/20-tokenizer.ini
/etc/php.d/20-bz2.ini
/etc/php.d/20-calendar.ini
/etc/php.d/20-ctype.ini
/etc/php.d/20-curl.ini
/etc/php.d/20-exif.ini
/etc/php.d/20-fileinfo.ini
/etc/php.d/20-ftp.ini
/etc/php.d/20-gettext.ini
/etc/php.d/20-iconv.ini
/etc/php.d/20-phar.ini
/etc/php.d/20-sockets.ini
/etc/php.d/20-tokenizer.ini
/etc/php.ini
For SSE Script I want to make output_buffer as null or Off like my another server but its not taking any change. I tested by changing php.ini as a root user and restarted httpd services.
I am assuming you are using php-fpm
Following command worked for me.
Connect via terminal and Make sure you are Super(Root) user
sudo su
Now run following command
sudo systemctl restart php-fpm.service
Note : Test by making small change like increasing or decreasing memory_limit in php config file and run above command and review change using phpinfo()
You don't mention whether you're using mod_php or php-fpm. Running sudo systemctl restart httpd.service only helps for mod_php. If you're using php-fpm, you need sudo systemctl restart php-fpm.service instead.
Changing etc/php.ini does not work any more.
You need to add your own .ini file now under "/etc/php.d" and restart php
confirm the path from phpinfo. Look for
"Scan this dir for additional .ini files /etc/php.d"
create file (30 prefix to file name is like priority or how late to load):
sudo vi /etc/php.d/30-user.ini
Add entries like:
max_execution_time=200
post_max_size=100M
upload_max_filesize=100M
Restart PHP (restarting Apache does not help)
Check the service (if not present ..restarting Apache should work: sudo systemctl restart httpd )
sudo systemctl status php-fpm
Resart the service
sudo systemctl restart php-fpm

The difference between /usr/local/etc vs /etc/apache2 for apache running on Mac OS

Hi I am very new to both apache and mac.
I had set up apache through Homebrew and as far as I understand so far,
apache from mac runs on OS level, but apache through Homebrew runs on user level. I think that is why mac apache stays in /etc level directory while Homebrew apache stays in /user/local/etc level.
However, I found out that both httpd.conf files differ from each other. Especially I am experiencing a problem that php doesn't render in a virtual host. I tried to fix the problem, but it seems like every solutions in the internet talks about httpd.conf for mac apache.
I am quite confused of what I am doing right now. It will be great if anyone of you guys can explain me how these apaches work different. Thanks!
Default apache path would be:
/etc/apache2/httpd.conf
homebrew apache path
/usr/local/etc/httpd/httpd.conf
You can check how many apaches are running in your system:
which -a apachectl
Default apache:
/usr/sbin/apachectl
Homebrew:
/usr/local/bin/apachectl
The command below for default apache
sudo apachectl restart
You may use this for the homebrew apache
sudo /usr/local/bin/apachectl restart

Php.ini extension directory not working

In my php.ini file i have setup on Mac OSX i've added in an an extension directory:
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226"
I've restarted apache and noticed that it isn't using this address instead:
/usr/local/Cellar/php56/5.6.26_2/lib/php/extensions/no-debug-non-zts-20131226
Now i'm 100% sure im in the correct php.ini files as i checked the php info and it says /private/etc/apache2/php.ini
I'm trying to get mcrypt installed which is in the first directory, am i looking at the wrong ini file? Or am i being silly and writing something incorrectly?
What am i missing?
sudo killall httpd
and then
sudo apachectl start
fixed my problem, Thanks to YvesLeBorg for the info.

Why Laravel doens't reconize mcrypt even though I have everything installed correctly on Yosemite OSX?

I created a new project with Laravel, then I put it in the corresponding path for apache could execute, then I write the URL in a browser to open the project and I get the following message
Mcrypt PHP extension required.
I installed mcrypt with this command
brew install homebrew/php/php55-mcrypt
and work fine when I create a new project in laravel
I was searching and I found this tutorial but still withouth work
Open /etc/php.ini and add the line below at the end extension=mcrypt.so.
If there is no php.ini file, then you need to make one from php.ini.default in the same location like so: sudo cp /etc/php.ini.default /etc/php.ini
allow write capability sudo chmod u+w /etc/php.ini
Then add the line as above in your favourite text editor: sudo nano /etc/php.ini
add in the line: extension=mcrypt.so
Restart Apache sudo apachectl restart
but still without work, what can I do?
While it's always good to do PHP stuff on a local server, you will almost always run into the issue of getting everything set up correctly if you don't know what you're doing. My advice, use a service already provided for you.
Using Homestead (Laravel's Dev Environment) will help in getting projects setup very quickly. It'll also have all the PHP modules (e.g. mcrypt) already configured.
I'd take a look at Homestead: Laravel Homestead
Try visiting: Install mcrypt for php on Mac OSX 10.10 Yosemite
OR
Just see your phpinfo(); it will give you the status for mcrypt.
OR
Try updating your php version. Visit: Update PHP
See, if that helps you.

How to get Xdebug to work on a Mac

I have spent a lot of time on this with no end product.
Installed MAMP.
Found "make" (was installed in different folder)
Installed autoconf which was missing so I can run phpize
Downloaded, compiled and installed xdebug according to:
http://www.xdebug.org/find-binary.php
Made necessary changes to correct php.ini.
Restarted MAMP - but phpinfo() does not show xdebug.
No matter what I do to the php.ini file located at /Applications/MAMP/conf/php5.3/php.ini, nothing changes. The site still loads fine. Even if I nuke it completely. Yet that is what phpinfo() shows it is loading.
What am I overlooking?
php.ini
[xdebug]
zend_extension=/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
The site where you can download precompiled binaries of xdebug had been down all morning (activestate) which is why I was trying to compile my own.
I just found out the site was back online, downloaded the xdebug.so file, and it is now loading.
Modern MACs have two kinds of binaries - 32-bit and 64-bit. Verify that you PHP matches your xdebug: do file Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so then file /path/to/mamp/Library/modules/php5.3/libphp5.so and see if they both show i386 or x86_64.
I just did it and it worked. Here is what I did:
install PECL in order to install Xdebug
download http://pear.php.net/go-pear.phar
in the download directory execute php -d detect_unicode=0 go-pear.phar
now add the ~/pear/bin folder to your path echo "export PATH=$PATH:/Users/the-user/pear/bin" >> .bash_profile
and make the change visible to your terminal . .bash_profile
install Xdebug
now that you have PECL it's as easy as sudo pecl install xdebug
now you need to add a line to php.ini
the php.ini on my mac (Lion) is /etc/php.ini.default
search for zend_extension and uncomment the line if it is correct or change it if it is not (in my case it was correct)
That's it. Unless you want to debug form IntelliJ Idea. In which case I had to copy /etc/php.ini.default to /etc/php.ini
have fun with PHP
Just to point out the obvious, but one that I keep throwing away time on; in an apache2 environment remember to restart apache2 for the changes to take effect.
sudo apachectl restart

Categories