PHP学习笔记

article/2025/10/4 19:34:56

学习笔记

  • PHP学习笔记
    • 部署
    • 遇到的问题
    • php在win10 64位下执行curl_init()方法报错的bug
    • thinkphp登陆失效的问题
    • 不同的win系统上无法使用curl的问题
    • thinkphp下调用python脚本
      • 先要有反应
      • 提示python不是内部命令
      • 以上处理后还提示no file /directory
    • 关于json里为数组时出现的问题
      • 解决方法

PHP学习笔记

已经拿到外包的项目源码了,之前就有说后台是用php写的,所以学了点基础,看了下源码,好嘛,打开了新世界,外包用的是thinkphp的框架,在网上看了点文档,然后摸索了一下他们的逻辑,大致也懂了,这里主要是写点部署上的事情

部署

php部署有两种方式
一种就是面向新手的,在百度上下一个宝塔还是小皮啥的一键服务的软件,他们里面已经自带了mysql,nginx,apache,所以你只需要配置一下端口号和项目目录就基本部署完成了;
这种方式有好有坏,对新手入门很好,不用考虑太多,但是对企业啥的来说会比较麻烦,比如说他自带的mysql和nginx就会和企业服务器已有的mysql,nginx重复,并且造成不必要的资源和端口号浪费就已经很麻烦了

另一种是自己简单的搭一下,可以充分利用公司已有的东西,就是需要配置的东西多一点,看着大佬们的文档配一下就行了
我用的是这个帖子的,里面顺便把php怎么安装使用也说了,我是跟着陪然后就能访问了

https://blog.csdn.net/sinat_41883985/article/details/106061125

遇到的问题

一开始用的是傻瓜式的部署程序,那个得关闭我自己已经有的数据库,用他的才行,然后遇到了关闭它自带的数据库之后,自己的数据库打不开的问题,提示是服务名无效
解决方法:在数据库的bin目录下,输入

mysqld -install

等待提示service install successfully的文字
然后重新启动数据库即可,当然配置了环境变量就随便找个目录输入下面的启动命令行也行

net start mysql

php版本和mysql版本之间的问题
php7以下的版本连接mysql8的时候会不允许访问,需要配置一下
在mysql根目录里找到my.ini,添加


character-set-server = utf8
default-authentication-plugin=mysql_native_password

然后重启mysql
如果还是不能访问并且提示
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
相关的内容
则还需要通过cmd命令行进入mysql
修改一下访问mysql的用户的权限

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

有的是直接显示成功,像这样
在这里插入图片描述
有的则可能会出现
在这里插入图片描述
这个问题
解决方法就是把localhost改成%然后运行即可,甚至不用重启mysql
我是在win7系统上的msyql8遇到的这个问题,win10没有这个情况,也没有上面的问题
程序真的是匪夷所思捏

php在win10 64位下执行curl_init()方法报错的bug

解决方案:

https://blog.csdn.net/weixin_28764585/article/details/115960108?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-115960108-blog-115960098.pc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3

核心问题:项目所在的服务器软件中少了允许php调用外部命令的dll文件
将需要的三个dll文件放在服务器软件中(我的是apache)的bin目录下,然后
httpd -k restart
即可正常调用和运行

thinkphp登陆失效的问题

情景:因为时间关系我是直接把本地的php和php项目直接复制拖入到服务器上的,通过apache启动后能正常访问就没有怎么理了
现在php项目里有一个后台的管理界面,通过账号密码登陆后提示登录失败,又返回到了登陆的界面,但是后台数据库和密码那些都是正确的,于是在网上查看了一下,发现是在登陆后的session没有保存成功,导致他是空的,这样在重定向对session进行判断时就会以为没有登陆成功,就会导致登陆成功后还是一直跳回登陆的界面,那么具体是什么问题导致的呢,一开始我以为是php里session设置的问题,然后在本地和服务器上的项目里都通过php_info对比了一下,发现两者没有区别,然后后面把关注点转移到了session的保存路径上,于是就发现因为是直接复制到服务器上的,而本地的session保存的路径在服务器上是没有的,因此系统无法正确的保存session,也就无法获得session
解决办法,在php项目中找到php.ini这个配置文件,
找到session.savepath的字样,然后修改到不为空的文件夹的路径,最后重启一下php项目所在的环境即可(比如我是放在apache的,因此通过命令行 httpd -k restart)即可重启,然后这个问题就解决了~

不同的win系统上无法使用curl的问题

https://curl.se/windows/

此链接上下载对应位数的curl压缩包,然后解压在服务器/你的win电脑上,然后在环境变量里添加解压后的文件的bin路径,就可以了

2023.3.22
tp5框架下无法通过curl访问外部api
可以在请求头上添加

"User-Agent:Mozilla/4.76"

thinkphp下调用python脚本

描述:希望在php中调用python脚本返回数据,发现请求之后没有任何反应

先要有反应

在php.ini中开启display_errors
可以直接在php中调用

ini_set("displays_error",0n);

然后打印一下php.info
ctrl+f
搜索display_errors,看看是不是显示on
然后在你要调用的php中的excu/system函数中输入的参数最后添加 ‘2>&1’

$result = excu("python main.py 2>&1");

然后就会出现报错信息了

提示python不是内部命令

浏览器调用php接口进行请求的时候提示python不是内部命令或者 批处理等文字时,说明当你在php中调用python脚本的时候,不能单纯的只是输入python,即使你的电脑已经配置了python的环境变量也不行,你必须要指定python在你电脑中的绝对路径,然后再输入对应需要执行的py文件

$result = excu("D:/sorftwares/Python/python main.py")

以上处理后还提示no file /directory

如果你是普通的php项目,非框架/非自行处理了映射路径的框架的话,是没有这一步的问题的
我的项目用的是tp框架,它对路径进行了处理,所以即使你把main.py文件放在了php文件的同级目录也是无法访问到的,也因此才会出现这个找不到对应的main.py的异常
解决:
如何解决呢,一样的输入正确的路径即可

$path = getcwd();//这个是获取到当前文件路径的函数,在后面拼接你的main.py和这个文件对应的路径即可

比如我是放在了执行php文件的上一级名叫python的文件夹里的main.py中
那么路径就是

$path = getcwd().'\Python\amin.py'

整体上你的代码应该是

$path = getcwd().'main.py在getcwd()中显示的路径下对应的路径'  // 我的是getcwd().'\Application\Api\Python\main.py'
$result = excu("D:/sorftwares/Python/python ".$path);

关于json里为数组时出现的问题

如题,如果前端发送给php后台的json是数组的话,php无法通过平时使用的json_decode函数进行转换,结果会为null

解决方法

使用函数

html_entity_decode($str)

然后再调用json_decode函数即可成功转换为php可识别的数组内容


http://chatgpt.dhexx.cn/article/rDWo1WON.shtml

相关文章

PHP实现支付宝支付

支付宝付款,开发上比起微信支付要简单很多,今天就以支付宝手机网站支付为例,简单讲一下实现方法: 前期准备,当然就不多说了,当你想开发使用支付宝支付,必然需要在支付宝开放品台注册认证并且创建好应用并且具备手机网站支付功能!不明白可以查看支付宝官方文档(https://docs.op…

外包网站建设需要注意什么

外包网站建设需要注意什么 对于如今许多的公司来说,拥有一个属于公司的网站是非常必要的。但是并不是所有的公司都会拥有专业的人员来进行网站的建设,所以网站建设外包则成为了诸多公司的首选。但是外包网站建设都需要哪些问题呢? 外包网站…

苏州外包php,【苏州IT外包经验】Ubuntu 17.10系统下配置PHP+Apache+Mysql

发布于 2017年11月16日 星期四 01:15 点击数:20883 本文为Ubuntu 17.10系统下配置PHP7.1Apache2.4Mysql5.7 一、Apache2 安装apache sudo apt-get apache2 编辑apache主配置文件/etc/apache2/apache2.conf,修改KeepAlive设置 KeepAlive Off Apache默认的…

Linux任务之自动发邮件

Linux任务之自动发邮件 文章目录 Linux任务之自动发邮件1、虚拟机Centos7环境(1)先设置自己的邮箱,我这用qq邮箱:(2)获取到密码后,我们要在Linux上配置邮件文件:(3&#…

Mac 定时自动发送邮件

文章目录 WhyHow1. 在automator中创建application2. 创建calender 自动定时发送email3. 自行测试 Refer Why 工作中,有时需要发送固定格式的email,每次人工做,比较繁琐,本篇博客描述了一种可以自动定时发送email的方式。 下面例…

如何利用 Python 自动发邮件,打工人福音

在工作中,每天或者每周结束的时候我们都会发送相应的日报或者周报给上级领导,来汇报你做了那些工作,可是汇报工作内容的时候我们始终都是打开邮箱、写入内容,发送和抄送给固定的人,那么这么繁琐并且重复的一件事&#…

用Excel和OutLook实现自动批量发邮件

转自:https://zhuanlan.zhihu.com/p/25283201 作者:闲者秋山 闲者秋山 闲者秋山 相信不少人的工作中都有这样的情况,需要群发通知邮件的情况。 (比如财务付完款,要通知供应商,房东之类的) 但如…

JAVA实现自动发送邮件

JAVA实现发送邮件 做项目时用到的小工具 做个备份&#xff08; tips: 需要导入javax.mail 我使用了maven导入X <!-- JavaMail相关依赖 --><dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><ver…

自动发送

自动发送 主要用于普通邮箱&#xff08;个人邮箱/企业邮箱&#xff09;群发&#xff0c;用户使用“群发单显”或“精准分发”生成邮件在“待发邮件”邮件夹中&#xff0c;开启自动发送&#xff0c;可按照设定的时间和速度进行邮件的自动发送。 最新功能&#xff08;版本&#x…

python---自动群发邮件

生活中我们经常发送邮件&#xff0c;那么我们能不能用Python写一个自动发送邮件的功能呢&#xff1f;答案是肯定的&#xff01;&#xff01;&#xff01; 开始实现功能之前我们需要开启我们邮箱的 IMAP/SMTP功能&#xff0c;我们先了解一下什么是IMAP/SMTP。 SMTP 的全称是“…

Python之邮箱自动发件

在使用python给好友发送邮件时&#xff0c;首先需要下载python中在对模块&#xff0c;以及打开邮箱IMAP/SMTP服务。接下来一步一步介绍读者如何来使用并实现发件。 1.下载python中在对模块 首先键盘点击winR键&#xff0c;输入pip search smtplib便可以看到smtplib模块下含有…

使用Python自动发送邮件

发送普通邮件 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;是简单传输协议。 python中对SMTP进行了简单的封装&#xff0c;可以发送纯文本邮件、HTML 邮件以及带附件的邮件。两个核心模块如下&#xff1a; email模块&#xff1a;负责构建邮件 smtplib模块&am…

通过SMTP协议自动发送邮件

通过SMTP协议实现训练结束自动发送邮件 为了更安心地摸鱼&#xff0c;想让大模型训练完之后自己发邮件给我。 开启SMTP服务与取得授权码 1.打开设置->账户->打开服务 然后会获得授权码 代码示例 #!/usr/bin/python\# -*- coding: utf-8 -*-import smtplib from e…

Java实现邮件自动发送

有时候我们会遇到自动发送邮件通知、邮件验证码、节假日祝福邮件发送、邮件自动发送广告功能&#xff0c;今天我们就谈谈邮件自动发送是怎么实现的。案例使用Java语言来编写&#xff0c;使用springBoot来搭建项目。 步骤一&#xff1a;添加邮件依赖&#xff1a;spring-boot-st…

sql自动发邮件功能

用SQL自动发邮件需要三步 1&#xff0c;做一个配置文件 2&#xff0c;调用存储过程msdb.dbo.sp_send_dbmail 3, 创建作业 1&#xff0c; 右键->【配置数据库邮件】 配置好了之后可以测试能否发送邮件 进去邮箱查看是否收到邮件或者数据库查询 select * from msdb.dbo.sys…

自动定时发送邮件的方法 —— 定时执行专家V6.8

目录 ▉ 定时发送简单邮件 ◆前提条件 ◆实现思路 ◆设置方法 ▉ 定时执行专家简介 ◆最新版下载链接 ◆2023-03-21 V6.8 - 更新日志 ▉ 定时发送简单邮件 ◆前提条件 - 电脑安装邮件客户端&#xff0c;使用这个邮件客户端&#xff0c;发送简单邮件。 ◆实现思路 组…

自动化发送邮件

自动化发送邮件 自动化发送邮件 背景SMTP了解一下邮件系统实现过程 1.连接建立2.邮件传输3.连接释放4.注意项目 信息格式MIME新增关键字multipart自动发邮件 构建过程 封装代码必要的设置 背景 室友选修的《机器学习》&#xff0c;结课作业是对8万的数据进行分析。他向我抱怨…

利用Python自动发送邮件

自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看&#xff0c;对于一些每天需要发的报表或者是需要一次发送多份的报表&#xff0c;这个时候可以考虑借助Python来自动发送邮件。 使用邮箱的第一步 一般我们在使用QQ邮箱、163邮箱、126邮箱等这些比较常用的邮箱时…

Java实现发送邮件(定时自动发送邮件)

系列文章目录 Redis缓存穿透、击穿、雪崩问题及解决方法Spring Cache的使用–快速上手篇分页查询–Java项目实战篇全局异常处理–Java实战项目篇 该系列文章持续更新&#xff0c;更多的文章请点击我的主页查看哦&#xff01; 文章目录 目录 系列文章目录 文章目录 前言 一…

使用Excel和OutLook实现自动发送邮件

参考我的资源: https://download.csdn.net/download/paul50060049/11805973 问题的产生 我们在平时工作中可能会遇到要批量发送邮件的工作&#xff0c;例如财务部根据每个人的工资情况发放工资条到个人的邮箱&#xff0c;因为邮件因人而异&#xff0c;所以需要完成大量而细致…