php 学习

开发工具:mamp

mysql:
mac用brew安装mysql,设置初始密码
下载地址

mysql安装:brew install mysql
查看mysql:brew info mysql
启动mysql服务: mysql.server start
设置密码:mysql_secure_installation
使用root用户启动:sudo mysql
设置mysql为开机启动项目:ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

mac apache:

sudo cp /Library/WebServer/Documents/index.html.en /Library/WebServer/Documents/pinfo.php
sudo vim /Library/WebServer/Documents/pinfo.php
sudo vim /etc/apache2/httpd.cnf
输入 /php 找到php那行,把前面注释去掉。

自动构建涉及到的sql 语句:

插入数据 sql:
INSERT INTO package (link,signatureMethod,version,date,branchName,projectName)
VALUES ("itms-services://?action=download-manifest&url=https://10.99.33.133/ota/MMCApp/webank/manifest/manifest_Debug_91_mmc.plist",
"Debug","91",CURRENT_DATE(),"develop","mmc")

查询develop 各签名的最新3个包:
(SELECT signatureMethod , link , version , branchName , projectName FROM package WHERE branchName = 'develop' and projectName = 'mmc' AND signatureMethod = 'Debug' ORDER BY version DESC LIMIT 3)
      UNION
      (SELECT signatureMethod , link , version , branchName , projectName FROM package WHERE branchName = 'develop' and projectName = 'mmc' AND signatureMethod = 'Adhoc' ORDER BY version DESC LIMIT 3)
       UNION ALL
       (SELECT signatureMethod , link , version , branchName , projectName FROM package WHERE branchName = 'develop' and projectName = 'mmc' AND signatureMethod = 'Release' ORDER BY version DESC LIMIT 3)

查询:
SELECT signatureMethod , link , version , branchName , projectName FROM package WHERE branchName = "develop" and projectName = "mmc"
AND signatureMethod = "Debug" ORDER BY version DESC

查询其它分支的最新版本的包列表:
SELECT * FROM package WHERE projectName = "mmc" and branchName != "develop" AND version IN
(SELECT MAX(version) FROM package WHERE projectName = "mmc" and branchName != "develop" GROUP BY branchName)

启动Apache服务 sudo apachectl start
重启Apache服务 sudo apachectl restart

日志目录:ErrorLog "/private/var/log/apache2/error_log"
shell 执行 php 脚本:
带传参:
shell 脚本: php php文件路径 参数
php 文件:

//通过 argv 接受参数,第0个参数是脚本自己的名称,第1个才是参数

//shell 执行
php /Library/WebServer/Documents/update.php  aaa

问题:

1.mysqli连接提示 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory

如果上面的连接地址是 localhost 就会报此错误,改成 127.0.0.1 后正常。
当主机填写为localhost时MySQL会采用 unix domain socket连接,当主机填写为127.0.0.1时MySQL会采用TCP/IP的方式连接。使用Unix socket的连接比TCP/IP的连接更加快速与安全。这是MySQL连接的特性,可以参考官方文档的说明4.2.2. Connecting to the MySQL Server。

这个问题有以下几种解决方法:

  • 使用TCP/IP代替Unix socket。即在连接的时候将localhost换成127.0.0.1。

  • 修改MySQL的配置文件my.cnf,指定mysql.socket的位置:
    /var/lib/mysql/mysql.sock (你的mysql.socket路径)。

  • 直接在php建立连接的时候指定my.socket的位置(官方文档:mysqli_connect)。比如:
    $db = new MySQLi('localhost', 'root', 'root', 'my_db', '3306', '/var/run/mysqld/mysqld.sock')

通常意义上localhost和127.0.0.1是等价的,只是mysql在处理这个名词的问题上有一些不同,是根据不同的地址来采取的不同的通信手段。
问题的最终解决方案是在连接的时候手动指定了 sock 文件的路径
原因呢,我猜大概是为了本地应用能获得更好的性能。而且localhost这个地址在mysql中也不会做匹配。即user@’%’不能匹配到user@'localhost'

你可能感兴趣的:(php 学习)