Apple의 터미널 (PHP 포함)을 사용하여 MySQL DB에 연결하려고합니다.
어제 잘 작동했지만 이제 제목에 갑자기 오류가 발생합니다.
스크립트는 브라우저를 사용하여 실행할 때 작동하지만 (XAMPP가 설치되어 있음) 터미널은 DB 연결을 거부합니다.
다음은 연결하기 위해 포함하는 파일입니다 (스크립트는 포함하지 않지만 작동하지만 DB에는 연결되지 않음).
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
브라우저에서 작동하기 때문에 작동합니다.
터미널에서 사용하는 명령은 php scriptname.php
입니다.
답변
어떤 이유로 OS X의 mysql은 필요한 소켓 파일의 위치가 약간 잘못되었지만, 해결책은 심볼릭 링크를 설정하는 것만 큼 간단합니다.
소켓이 (길이가 0 인 파일로 표시됨) /tmp/mysql.sock
또는 /var/mysql/mysql.sock
로있을 수 있지만 하나 이상의 앱이 다른 위치를 찾고 있습니다. 이 명령으로 알아보십시오.
ls -l /tmp/mysql.sock /var/mysql/mysql.sock
소켓을 이동하고 구성 파일을 편집하는 대신 편집 된 파일을 로컬 및 경로가 올바른 서버와 멀리 떨어진 곳에 두어야합니다. 심볼릭 링크를 만들면 Mac이 잘못된 위치를 찾을 때도 필요한 소켓을 찾을 수 있습니다. !
당신이 가지고 /tmp/mysql.sock
있지만 /var/mysql/mysql.sock
그때가 없다면 …
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock
당신이 가지고 /var/mysql/mysql.sock
있지만 /tmp/mysql.sock
그때가 없다면 …
cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock
디렉토리와 링크를 만들 수있는 권한이 필요하므로 필요한 경우 위 명령에 sudo를 접두어로 붙이십시오.
답변
나는 또한이 오류가 있었지만 여기 의 제안을 통해서만 해결할 수 있습니다. .
요약하면 다음을 사용하십시오.
127.0.0.1
대신에:
localhost
그 이유는 “localhost”는 MySQL 드라이버가 TCP 소켓 대신 UNIX 소켓을 사용하여 MySQL에 연결하도록하는 특수한 이름이기 때문입니다.
답변
나는 같은 문제를 겪고 있었고 이것이 내가 고 쳤던 방법이다.
나는 이것을 가지고 작동하지 않았다 :
$con = mysql_connect('localhost', 'root', '1234');
나는 이것을했고 그것이 효과가 있었다 :
$con = mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '1234');
mysql 서버를 사용하는 대신 Unix Socket에 직접 연결했습니다. 나를 위해 일했다.
답변
MySQL 소켓은 일반적으로 /tmp/mysql.sock
또는 /var/mysql/mysql.sock
에 있지만 PHP는 잘못된 위치에 있습니다.
-
소켓이 어디에 있는지 확인하십시오.
sudo /usr/libexec/locate.updatedb
-
updatedb가 종료 될 때 :
locate mysql.sock
-
그런 다음 php.ini를 찾으십시오.
php -i | grep php.ini
이것은 다음과 같이 출력됩니다 :
Configuration File (php.ini) Path => /opt/local/etc/php54 Loaded Configuration File => /opt/local/etc/php54/php.ini
-
php.ini 편집
sudo vim /opt/local/etc/php54/php.ini
-
줄을 바꾸십시오 :
pdo_mysql.default_socket=/tmp/mysql.sock mysql.default_socket=/tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
여기서 /tmp/mysql.sock은 소켓의 경로입니다.
-
수정 사항을 저장하고 ESC + SHIFT를 종료하십시오. x
-
아파치 다시 시작
sudo apachectl stop sudo apachectl start
답변
Mac OS X에서 XAMPP를 사용하고 있으며 위의 Brian Lowe 솔루션이 약간 수정되었습니다 .
mysql.sock 파일은 실제로 “/ Applications / xampp / xamppfiles / var / mysql /”폴더에 있습니다. 따라서 / tmp와 / var / mysql에서 모두 연결해야했습니다. PHP 명령 줄에서 어느 것이 사용되는지 확인하지 못했지만 이것이 수정되었으므로 행복합니다 🙂
sudo su
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
mkdir /var/mysql
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock
답변
Mac OS X EL Capitan + MAMP Pro 이렇게하십시오
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
그런 다음이 작업을 수행
cd /tmp
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
이것이 시간을 절약하기를 바랍니다.
답변
그 이유는 PHP가 올바른 경로를 찾을 수 없기 때문입니다 mysql.sock
.
mysql이 먼저 실행되고 있는지 확인하십시오.
그런 다음 어느 경로가 mysql.sock
예 :/tmp/mysql.sock
그런 다음이 경로 문자열을 php.ini에 추가하십시오.
- mysql.default_socket = /tmp/mysql.sock
- mysqli.default_socket = /tmp/mysql.sock
- pdo_mysql.default_socket = /tmp/mysql.sock
마지막으로 Apache를 다시 시작하십시오.
