php所有版本的地址: https://windows.php.net/downloads/releases/archives/

访问控制器时省略了index.php报No input file specified.

解决:public/.htaccess下文件改为(RewriteRule行):

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

Apache开启路由重写(一般默认开启了):

httpd.conf中mod_rewrite.so注释去掉。

阿里文件上传跨域

错误信息:

Access to XMLHttpRequest at 'http://xxxx.oss-cn-hangzhou.aliyuncs.com/file?uploads=' from origin 'http://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

require_once(): Failed opening required '../a.php' (include_path='.;C:\php\pear')

通过百度尝试以下,都没用:

1.可能由于你没有传完整php程序,或者php程序中的某个文件损坏,可能会报这个错误。去官网重新下载文件,是虚拟空间的请用官网支持的FTP工具上传php程序。

2.文件权限问题,可能文件或者文件夹权限设置错误引起的。

3.文件夹名含有中文,有时候中文文件夹名也可能引起这个错误,建议改成英文的。

4.修改php程序,这个方法我不推荐(因为有的php程序可能需要改很多很多)

5.修改php.ini配置文件。

通过测试,其在相同路径或者子路径是能生效的,也就是说它不识别../跳到上一个路径,那就直接使用路径常量定位到项目根路径,进行拼接,如:

require_once THINK_PATH.'\Library\Vendor\aliyunOss\autoload.php';

Can't use method return value in write context

错误位置

FILE: xxx\WWW\app\ThinkPHP\Library\Vendor\aliyunOss\src\OSS\OssClient.php  LINE: 3384

这里是使用了阿里云OSS的phpsdk,目前的版本是(2.6.0 时间是:20221022),其文档上说支持PHP 5.3以上版本。



但很可惜那都是骗人的,然后换底版本的sdk(v2.2.4)。这个错就消失了。

Exception' with message '"xxxx.oss-cn-beijing.aliyuncs.com"bucket name is invalid' in

这是阿里云OSS的一个报错,这说明连上了呀。

这个是bucket名称错了,其值应该是这里的,(而不是像这种的xxx.oss-cn-beijing.aliyuncs.com):

关于文件上传

在php.ini中需要配置文件上传的最大值等,否则上传文件超出大小时$_FILES为空

;post的最大值 默认的post_max_size 为2M
post_max_size=1024M
;PHP页面运行的最大时间值,默认30秒
max_execution_time=300
;上传的最大值 默认为8M post_max_size 大于 upload_max_filesize 为佳
upload_max_filesize=1024M
;是否允许通过HTTP上传文件的开关。默认为ON即是开
file_uploads = on
;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_tmp_dir
;每个PHP页面接收数据所需的最大时间,默认60秒
max_input_time = 600
;每个PHP页面所吃掉的最大内存,默认8M
memory_limit = 8m

注:部署在Linux中的时候,要上传到的文件夹必须要有相关的权限。不然你在windows环境,啥都正常也传不上的。

ThinkPHP 验证码不显示

  1. 检查PHP是否已经安装GD库支持;将extension=php_gd2.dll的注释放开。
  2. 如果是中文验证码检查是否有拷贝字体文件到类库所在目录;

ThinkPHP 验证码总是不正确 后台不能登入

使用new \Think\Verify();生成验证码会在session中保存验证码的值,但是若session的路径设置有问题,或者是没设置会导致其无法保存,进而一直都是空的导致出错。

;配置session路径
session.save_path="D:\phpStudy\tmp\tmp"

当你配置了它发现还是不行的话,然后你切个低版本的它又行了,可能是当前项目目录下有类型user.ini也配置了session.save_path的值。你可以使用phpinfo();看下是不是有个local的量。

Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

改错误一般为pdo_mysql拓展未开启,在php.ini中将extension=pdo_mysql的注释放开即可。

还不行,则可在phpinfo中检测拓展的目录是否设置正确,和改目录下是否有该拓展。

STORAGE_WRITE_ERROR:./../cache/Cache/Home/e1abadd62c4e87a9a75c0e547ca055ed.php

cache文件夹没有写入的权限,导致缓存无法写入。此问题很容易在使用widnows开发,然后部署到linux中时,有不少问题就是权限没给导致的。

解决:权限设置成777或者nginx(apache)所在的组和用户。

Fatal error: Uncaught Error: Call to undefined function Think\C() in Library\Think\Think....

可以在app\ThinkPHP\Library\Think\Think.class.php直接看TP的源码:

start方法中有:

点击查看代码
/**
* 应用程序初始化
* @access public
* @return void
*/
static public function start() {
...... // 这里可以看到 它取了~runtime.php文件
$runtimefile = RUNTIME_PATH.APP_MODE.'~runtime.php';
if(!APP_DEBUG && Storage::has($runtimefile)){
Storage::load($runtimefile);
}else{
if(Storage::has($runtimefile))
Storage::unlink($runtimefile);
$content = '';
// 读取应用模式
$mode = include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php';
// 加载核心文件
foreach ($mode['core'] as $file){
if(is_file($file)) {
include $file;
if(!APP_DEBUG) $content .= compile($file);
}
} ..... if(!APP_DEBUG){
$content .= "\nnamespace { Think\\Think::addMap(".var_export(self::$_map,true).");";
$content .= "\nL(".var_export(L(),true).");\nC(".var_export(C(),true).');Think\Hook::import('.var_export(Hook::get(),true).');}';
Storage::put($runtimefile,strip_whitespace('<?php '.$content));
}else{
// 调试模式加载系统默认的配置文件
C(include THINK_PATH.'Conf/debug.php');
// 读取应用调试配置文件
if(is_file(CONF_PATH.'debug'.CONF_EXT))
C(include CONF_PATH.'debug'.CONF_EXT);
}
}
.... // 运行应用
App::run();
}

如果不成立引入正常文件,并 重新生成common~runtime.php编译文件,所以这错的时候就可尝试删除掉~runtime.php文件,让它重新生成,看能不能引入。

若还不能可参考看看:https://blog.csdn.net/matthis_meng/article/details/120286461

关于缓存common~runtime.php

有时发先有些错,咋找都没问题,可能删下这个缓存就好了。

Data truncated for column ‘字段名‘ at row 1

  1. 修改的字段不为空,如已经设定为枚举。
  2. 更新字段长度超出表限制的长度。
  3. 更新的字段类型与表中的类型不匹配。

    具体参考:https://blog.csdn.net/qq_43070236/article/details/126197875

“include_path='.;c:\php5\pear'”错误

在php.ini中可配置include_path来达到在任何文件中都可以直接引入该目录下文件

include_path = '.;c:\php5\pear'

给定有路径/目录(相对路径或绝对路径),则按照给定路径查找文件,include_path设置将被完全忽略。

未给定路径/目录(相对路径或绝对路径),则按照include_path指定目录寻找->脚本所在目录和当前目录下寻找

未找到,include发出一条警告,require发出一个致命错误。

具体可参考:https://www.cnblogs.com/wanghaokun/p/10184491.html

页面错误!请稍后再试~ 相关配置

  1. 未开启调试模式

    没有开启调试的模式的时候相关的配置,可以在app\ThinkPHP\Conf\convention.php进行配置。

  2. 开启调试模式

    public/index.php

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG', false);

开启调试模式后,更多的配置可以在app\ThinkPHP\Conf\debug.php进行配置。

常用配置项:

'TMPL_CACHE_ON'         =>  true,        // 是否开启模板编译缓存,设为false则每次都会重新编译
'TMPL_CACHE_TIME' => 0, // 模板缓存有效期 0 为永久,(以数字为值,单位:秒)
'SHOW_ERROR_MSG' => false, // 显示错误信息

从改一个老项目开始的PHP踩坑记的更多相关文章

  1. WinUI 3 踩坑记:从创建项目到发布

    本文是 WinUI 3 踩坑记 的一部分,该系列发布于 GitHub@Scighost/WinUI3Keng,若内容出现冲突以 GitHub 上的为准. 创建项目 现在 WinUI 3 的入门体验比刚 ...

  2. Android 上传开源项目到 jcenter 实战踩坑之路

    本文微信公众号「AndroidTraveler」首发. 背景 其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章. 包括我本人在将开源项目上传到 jcenter ...

  3. 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记

    SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...

  4. 攻城记:Thinkphp框架的项目规划总结和踩坑经验

    一.项目模块规划 1.项目分为PC端.移动端.和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin: 对应入口 ...

  5. vue踩坑记-在项目中安装依赖模块npm install报错

    在维护别人的项目的时候,在项目文件夹中安装npm install模块的时候,报错如下: npm ERR! path D:\ShopApp\node_modules\fsevents\node_modu ...

  6. 【React踩坑记四】React项目中引入并使用js-xlsx上传插件(结合antdesign的上传组件)

    最近有一个前端上传并解析excel/csv表格数据的需求. 于是在github上找到一个14K star的前端解析插件 github传送门 官方也有,奈何实在太过于浅薄.于是做了以下整理,避免道友们少 ...

  7. 【React踩坑记一】React项目中禁用浏览器双击选中文字的功能

    常规项目,我们只需要给标签加一个onselectstart事件,return false就可以 例: <div onselectstart="return false;" & ...

  8. 【React踩坑记五】React项目中引入并使用react-ace代码编辑插件(自定义列表提示)

    最近有一个引入sql编辑器插件的需求,要求代码高亮显示,代码智能提示,以及支持自定义代码提示列表等功能.中途在自定义代码提示列表中由于没有相关demo,所以踩了一些坑,遂将其整理如下,以便日后查看. ...

  9. 【React踩坑记六】create-react-app创建的react项目通过iP地址访问(实现局域网内访问)

    同项目组的小伙伴想用自己的电脑访问我电脑上开发阶段的create-react-app创建的react项目. 试过了了各种内网穿透工具ngrok以及localtunnel等. 奈何打开效率实在太过于龟速 ...

  10. vue项目打包踩坑记

    基于webpack+vue-cli下的vue项目打包命令是 npm run build ,等待打包完成后在根目录生成dist文件夹,里面包含了所有项目相关的内容. 注意:需要完整版的vue-cli项目 ...

随机推荐

  1. 记录--手写一个 v-tooltip 指令

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 日常开发中,我们经常遇到过tooltip这种需求.文字溢出.产品文案.描述说明等等,每次都需要写一大串代码,那么有没有一种简单的方式 ...

  2. #扫描线,线段树#洛谷 3875 [TJOI2010]被污染的河流

    题目 分析 矩阵面积并不是扫描线模板题吗 然后连题目都没仔细看就交了 发现它是一个线段向外扩展一个格子qwq 代码 #include <cstdio> #include <cctyp ...

  3. Manacher小记

    目录 前言 洛谷 3805[模板]manacher算法 题目 分析 代码 洛谷 4555 最长双回文串 题目 分析 代码 洛谷 1659 拉拉队排练 题目 分析 代码 前言 皆移植于原csdn博客,略 ...

  4. Jetty的server模块

    启用server模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=server 命令的输出,如下: INFO : server init ...

  5. 4步成功将三方库——speexdsp移植到OpenHarmony

     战码先锋,PR征集令(以下简称"战码先锋")第二期正如火如荼地进行中,涉及OpenAtom OpenHarmony(以下简称"OpenHarmony")主干仓 ...

  6. 在Centos 8 服务器用tmux多开窗口

    在 CentOS 服务器上使用 tmux 来多开窗口是一个高效的方式.tmux 是一个终端复用器,它允许你在一个终端窗口中打开多个终端会话,还可以在会话之间轻松切换,非常适合长时间运行程序或多任务操作 ...

  7. Python 元组完全指南1

    元组用于在单个变量中存储多个项目. mytuple = ("apple", "banana", "cherry") 元组是 Python 中 ...

  8. configparser封装后报错:configparser.NoSectionError: No section: 'LoginElement'

    前言 这是目录结构 先贴一下源代码 # read_ini.pyimport configparser class ReadIni(): """读取 ini.ini 配置文 ...

  9. Redis之父萨尔瓦多·桑菲利波又名安蒂雷斯

    萨尔瓦多·桑菲利波又名安蒂雷斯 个人博客连接 嗨,我是萨尔瓦多·桑菲利波,也被称为安提雷斯, 一位居住在卡塔尼亚的意大利计算机程序员. 我于7年1977月2020日出生在坎波贝洛迪利卡塔. 2022 ...

  10. 把vim配置成顺手的python轻量级IDE(一)

    把vim配置成顺手的python轻量级IDE(一) 地球的外星人君 Linux云计算和Python推动市场提升的学习研究者. 分享一篇文章,正好最近正在折腾VIM,原文在把vim配置成顺手的pytho ...