从改一个老项目开始的PHP踩坑记

打印 上一主题 下一主题

主题 1026|帖子 1026|积分 3078

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

解决:public/.htaccess下文件改为(RewriteRule行):
  1. <IfModule mod_rewrite.c>
  2.   Options +FollowSymlinks -Multiviews
  3.   RewriteEngine On
  4.   RewriteCond %{REQUEST_FILENAME} !-d
  5.   RewriteCond %{REQUEST_FILENAME} !-f
  6.   RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
  7. </IfModule>
复制代码
Apache开启路由重写(一般默认开启了):
httpd.conf中mod_rewrite.so注释去掉。
阿里文件上传跨域

错误信息:
  1. 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配置文件。
通过测试,其在相同路径或者子路径是能生效的,也就是说它不识别../跳到上一个路径,那就直接使用路径常量定位到项目根路径,进行拼接,如:
  1. 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为空
  1. ;post的最大值 默认的post_max_size 为2M
  2. post_max_size=1024M
  3. ;PHP页面运行的最大时间值,默认30秒
  4. max_execution_time=300
  5. ;上传的最大值 默认为8M post_max_size 大于 upload_max_filesize 为佳
  6. upload_max_filesize=1024M
  7. ;是否允许通过HTTP上传文件的开关。默认为ON即是开
  8. file_uploads = on
  9. ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
  10. upload_tmp_dir
  11. ;每个PHP页面接收数据所需的最大时间,默认60秒
  12. max_input_time = 600
  13. ;每个PHP页面所吃掉的最大内存,默认8M
  14. memory_limit = 8m
复制代码
ThinkPHP 验证码总是不正确 后台不能登入

使用new \Think\Verify();生成验证码会在session中保存验证码的值,但是若session的路径设置有问题,或者是没设置会导致其无法保存,进而一直都是空的导致出错。
  1. ;配置session路径
  2. session.save_path="D:\phpStudy\tmp\tmp"
复制代码
当你配置了它发现还是不行的话,然后你切个低版本的它又行了,可能是当前项目目录下有类型user.ini也配置了session.save_path的值。你可以使用phpinfo();看下是不是有个local的量。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表