最新的 Synology NAS DSM 6 版本有一个奇怪的 PHP 设置。命令行二进制文件是 PHP 版本 5.6.11,几乎没有启用任何模块,并且 tokenizer 部分未编译到其中。但是,当安装 synology web 服务器应用程序并运行时,phpinfo();
它显示 PHP 版本 5.6.17,其中启用了许多模块,包括 intl 和 tokenizer。正在运行的 web 服务器是带有 php-fpm 的 Apache。
是否可以使用来自 Web 服务器的 PHP 二进制文件在命令行上运行 php?我需要这样做,因为我只有一个基于 Symfony 的 PHP 命令行应用程序,它需要 intl 和 tokenizer(可能还有更多)扩展。
编辑:
找到解决方案https://stackoverflow.com/questions/30238602/how-to-execute-a-php-file-using-a-php5-fpm-pool-socket,但太复杂了。
答案1
只需在 cli 中使用 php56 代替 php 即可。
答案2
我终于在这里找到了答案https://forum.synology.com/enu/viewtopic.php?f=20&t=91099#p425790. 创建链接后
ln -s /usr/local/bin/php56 /sbin/php
和
ln -s /usr/local/bin/php56 /usr/local/bin/php
它通过命令行和 cron 作业开始工作。