### Summary

This works on ansible 2.9.6 but fails on 3.8.10
Running on Ubuntu 20.04, Python version 3.8.10
**This task:**
```
  - name: Create generic link activemq to installation of choice
    file:
      src: /opt/apache-activemq-5.15.10
      dest: /opt/activemq
      state: link
```

**Produces this error:**
```
TASK [Create generic link activemq to installation of choice] ******************
fatal: [localhost]: FAILED! => {
    "changed": false,
    "rc": 1
}
MSG:
MODULE FAILURE
See stdout/stderr for the exact error
MODULE_STDOUT:
Traceback (most recent call last):
  File "/home/dfr/.ansible/tmp/ansible-tmp-24078.281748716-105360636672052/AnsiballZ_file.py", line 102, in <module>
    _ansiballz_main()
  File "/home/dfr/.ansible/tmp/ansible-tmp-24078.281748716-105360636672052/AnsiballZ_file.py", line 94, in _ansiballz_main

    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/dfr/.ansible/tmp/ansible-tmp-24078.281748716-105360636672052/AnsiballZ_file.py", line 34, in invoke_module
    z.writestr(zinfo, sitecustomize)
  File "/usr/lib/python3.8/zipfile.py", line 1816, in writestr
    with self.open(zinfo, mode='w') as dest:
  File "/usr/lib/python3.8/zipfile.py", line 1517, in open
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  File "/usr/lib/python3.8/zipfile.py", line 1614, in _open_to_write
    self.fp.write(zinfo.FileHeader(zip64))
  File "/usr/lib/python3.8/zipfile.py", line 448, in FileHeader
    header = struct.pack(structFileHeader, stringFileHeader,
struct.error: ushort format requires 0 <= number <= (0x7fff * 2 + 1)
```
This works on ansible 2.9.6 but fails on 3.8.10

### Issue Type

Bug Report

### Component Name

file

### Ansible Version

```console
dfr@ansible-20:~/projects/m9kdeploy$ ansible --version
ansible [core 2.12.10]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/dfr/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/dfr/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, Nov 14 2022, 12:59:47) [GCC 9.4.0]
  jinja version = 2.10.1
  libyaml = True
```


### Configuration

```console
dfr@ansible-20:~/projects/m9kdeploy/playbooks$ ansible-config dump --only-changed -t all
DEFAULT_HOST_LIST(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = ['/home/dfr/projects/m9kdeploy/playbooks/inventory-home']
DEFAULT_STDOUT_CALLBACK(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = debug
DEFAULT_VAULT_PASSWORD_FILE(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = /home/dfr/.ansible/vault-password
DISPLAY_SKIPPED_HOSTS(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = False
HOST_KEY_CHECKING(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = False
INTERPRETER_PYTHON(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = /usr/bin/python3

BECOME:
======

CACHE:
=====

CALLBACK:
========

default:
_______
display_skipped_hosts(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = False

CLICONF:
=======

CONNECTION:
==========

paramiko_ssh:
____________
host_key_checking(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = False

ssh:
___
host_key_checking(/home/dfr/projects/m9kdeploy/playbooks/ansible.cfg) = False

HTTPAPI:
=======

INVENTORY:
=========

LOOKUP:
======

NETCONF:
=======

SHELL:
=====

VARS:
====
```


### OS / Environment

Ubuntu 20.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
  - name: Create generic link activemq to installation of choice
    file:
      src: /opt/apache-activemq-5.15.10
      dest: /opt/activemq
      state: link
```


### Expected Results

I expect the link to be created with no error

### Actual Results

```console
TASK [Create generic link activemq to installation of choice] ******************
fatal: [localhost]: FAILED! => {
    "changed": false,
    "rc": 1
}

MSG:

MODULE FAILURE
See stdout/stderr for the exact error


MODULE_STDOUT:



Traceback (most recent call last):

  File "/home/dfr/.ansible/tmp/ansible-tmp-24078.281748716-105360636672052/AnsiballZ_file.py", line 102, in <module>

    _ansiballz_main()

  File "/home/dfr/.ansible/tmp/ansible-tmp-24078.281748716-105360636672052/AnsiballZ_file.py", line 94, in _ansiballz_main

    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)

  File "/home/dfr/.ansible/tmp/ansible-tmp-24078.281748716-105360636672052/AnsiballZ_file.py", line 34, in invoke_module

    z.writestr(zinfo, sitecustomize)

  File "/usr/lib/python3.8/zipfile.py", line 1816, in writestr

    with self.open(zinfo, mode='w') as dest:

  File "/usr/lib/python3.8/zipfile.py", line 1517, in open

    return self._open_to_write(zinfo, force_zip64=force_zip64)

  File "/usr/lib/python3.8/zipfile.py", line 1614, in _open_to_write

    self.fp.write(zinfo.FileHeader(zip64))

  File "/usr/lib/python3.8/zipfile.py", line 448, in FileHeader

    header = struct.pack(structFileHeader, stringFileHeader,

struct.error: ushort format requires 0 <= number <= (0x7fff * 2 + 1)
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
# may load the system-wide install of ansible rather than the one in
        # the module.  sitecustomize is the only way to override that setting.
        z = zipfile.ZipFile(modlib_path, mode='a')
        # py3: modlib_path will be text, py2: it's bytes.  Need bytes at the end
        sitecustomize = u'import sys\\nsys.path.insert(0,"%%s")\\n' %%  modlib_path
        sitecustomize = sitecustomize.encode('utf-8')
        # Use a ZipInfo to work around zipfile limitation on hosts with
        # clocks set to a pre-1980 year (for instance, Raspberry Pi)
        zinfo = zipfile.ZipInfo()
        zinfo.filename = 'sitecustomize.py'
        zinfo.date_time = ( %(year)i, %(month)i, %(day)i, %(hour)i, %(minute)i, %(second)i)
        z.writestr(zinfo, sitecustomize)
        z.close()
        # Put the zipped up module_utils we got from the controller first in the python path so that we
        # can monkeypatch the right basic
        sys.path.insert(0, modlib_path)
        # Monkeypatch the parameters into basic
        from ansible.module_utils import basic
        basic._ANSIBLE_ARGS = json_params
%(coverage)s
        # Run the module!  By importing it as '__main__', it thinks it is executing as a script
        runpy.run_module(mod_name='%(module_fqn)s', init_globals=dict(_module_fqn='%(module_fqn)s', _modlib_path=modlib_path),
                         run_name='__main__', alter_sys=True)
        # Ansible modules must exit themselves
        print('{"msg": "New-style module did not handle its own exit", "failed": true}')
        sys.exit(1)
    def debug(command, zipped_mod, json_params):
        # The code here normally doesn't run.  It's only used for debugging on the
        # remote machine.
        #