如何在synology上执行带有扩展的PHP CLI脚本
我正在尝试通过synology NAS上的命令行执行php脚本。通过网络浏览器,工作正常。然而,尽管我在如何在synology上执行带有扩展的PHP CLI脚本,php,mysql,command-line-interface,synology,Php,Mysql,Command Line Interface,Synology,我正在尝试通过synology NAS上的命令行执行php脚本。通过网络浏览器,工作正常。然而,尽管我在/etc/php/php.ini中加载了扩展,但通过CLI我还是收到了一个错误 致命错误:未捕获PDOException:在/volume1/web/blabla.php:16中找不到驱动程序 有什么想法吗?您尝试过:php56 path/to/script.php或php70 path/to/script.php吗? 如果我没有错的话,/etc/php/php.ini是用于DSM引擎的。。。
/etc/php/php.ini
中加载了扩展,但通过CLI我还是收到了一个错误
致命错误:未捕获PDOException:在/volume1/web/blabla.php:16中找不到驱动程序
有什么想法吗?您尝试过:php56 path/to/script.php或php70 path/to/script.php吗? 如果我没有错的话,/etc/php/php.ini是用于DSM引擎的。。。 对于symfony,我使用php56 bin/console命令。php或php70对我不起作用(DS415+上的DSM 6.1.3)
希望有帮助 只需确保使用正确的PHP版本和PHP.ini即可。您可以通过键入“php--ini”找到php.ini的位置。也可以在可执行文件php56/php70上执行此操作。它们都有单独的php.ini文件。另外,请确保在适用的php.ini文件中加载正确的扩展目录。Synology使用两种不同的php安装。一个用于解决内部问题(如管理员面板),另一个来自您为web服务器安装的包 您可以观察从命令行运行的差异:
php --ini
php56 --ini
php7 --ini
(取决于安装的php软件包)
使用php56或php7运行脚本
更新 请使用以下最新版本的PHP(假设已安装这两个版本)
我也在同一条船上——试图让PHP7.0在我的Synology DiskStation DS218+的命令行上运行 我键入了
php70--ini
,发现PHP使用的是位于/usr/local/etc/php70/PHP.ini的ini文件
我去了目录
cd /usr/local/etc/php70/
备份了.ini
文件以防万一
sudo cp php.ini php.ini.bak
已打开vi
sudo vi php.ini
点击i
进入Insert
模式。我改变了这一点:
extension_dir = "/usr/local/lib/php70/modules"
为此:
extension_dir = "/volume1/@appstore/PHP7.0/usr/local/lib/php70/modules"
我还添加了这一行:
extension = pdo_mysql.so
然后我点击Esc
,然后点击:
,然后点击wq
和。这将离开插入模式,将.ini
写入磁盘,然后退出
就这样!在那之后,我可以通过调用php70
,然后调用脚本名来运行命令行脚本。对于我(DSM 6.1.6-15266更新1),以下帮助:
将以下行添加到/usr/local/etc/php70/php.ini
extension = pdo_mysql.so
extension = openssl.so
我花了很长时间才得到正确的值,最后我通过与php56实例的配置文件进行比较找到了它们。好的,bla bla位可能有用,所以您介意。还有一些实际的代码,他们对这样一个含糊不清、问题严重的问题投了赞成票。请阅读鼠标悬停在“向上投票”按钮上时得到的工具提示。。。。。它不是,它不是,它不是。请阅读并了解如何创建一个与代码无关的文件,那么我为什么要发布实际的代码呢?您是否意识到通常有2个php.ini
文件。一个用于Apache,另一个专用于PHP CLI。运行php--ini
并查看php CLI ini文件的实际位置。语法php自动更新似乎覆盖了php.ini。所以你最好禁用它。也许有人知道如何解决这个问题。使用PHP7.4,WebStation从/usr/syno/etc/packages/WebStation/php\u profile/…somelongnumber…/conf.d/user\u settings.ini
加载扩展,从/usr/local/etc/php74/CLI/conf.d/extension.ini
加载CLI。为上一个添加扩展为我做到了这一点。
extension = pdo_mysql.so
extension = openssl.so