当前最新版本是 osticket 1.17.3, 要求是php8.1。
遇到的第一个问题是:osticket 中显示的工单时间比现时的要快几个小时。debian 11系统里设置的是“中国标准时间 CST”,即北京时间。虽然 osticket 里可以设置时区,但当php.ini里设置时区为 Asia/Shanghai 时,osticket 认为数据库里的时区 CST 是 America/Chicago 时区。
可尝试的方法是按照网友说的,修改 include/class.config.php 里的 function getDbTimezone()
。手动设置时区。如 修改为: $dvd_db_timezone='Asia/Shanghai'; return $dvd_db_timezone;
第二个问题是:管理面板里的 ajax 部分页面不可访问到,如网址 https://example.com/scp/ajax.php/help/tips/settings.system , nginx 会报 404 错误。原因是 osticket 默认只支持 apache 和 iis。
可能问的人多了,它直接放了一个配置内容参考:
server {
listen 443 ssl http2;
ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/example.com/example.com.key;
root /var/www/example.com/osticket;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com;
set $path_info "";
location ~ /include {
deny all;
return 403;
}
if ($request_uri ~ "^/api(/[^\?]+)") {
set $path_info $1;
}
location ~ ^/api/(?:tickets|tasks).*$ {
try_files $uri $uri/ /api/http.php?$query_string;
}
if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
set $path_info $1;
}
if ($request_uri ~ "^/.*\.php(/[^\?]+)") {
set $path_info $1;
}
location ~ ^/scp/ajax.php/.*$ {
try_files $uri $uri/ /scp/ajax.php?$query_string;
}
location ~ ^/ajax.php/.*$ {
try_files $uri $uri/ /ajax.php?$query_string;
}
location / {
try_files $uri $uri/ index.php;
}
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PATH_INFO $path_info;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
}
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
第三个问题是:用php的mail()函数发出的邮件正文不可读的,是base64后的代码。原因可能是 osticket 带的发件组件 Laminas-Mail 不是最新的,当环境是php8时,会打乱邮件的标头,exim认为原本多行的标头仅是一行,所以阅读邮件时不能正常识别。
可以尝试的方法是在 osticket/include/laminas-mail/src/Transport/Sendmail.php 文件中,用 if (PHP_VERSION_ID < 80000 && ! $this->isWindowsOs()) {
替换 if (! $this->isWindowsOs()) {
。
参考: