Php Tensorflow 1.5的非法指令(内核转储)

Php Tensorflow 1.5的非法指令(内核转储),php,python,ubuntu,tensorflow,Php,Python,Ubuntu,Tensorflow,我有一个用于运行tensorflow模型的python脚本,我需要使用PHPshell\u exec函数从PHP文件(出于复杂原因)运行该脚本。当我使用以下代码运行python文件时: $command = 'cd testModels/crosswalkPredict && . activate keras && python test_script.py'; $output = shell_exec($command); 我得到以下错误:非法指令(内核转储)

我有一个用于运行tensorflow模型的python脚本,我需要使用PHP
shell\u exec
函数从PHP文件(出于复杂原因)运行该脚本。当我使用以下代码运行python文件时:

$command = 'cd testModels/crosswalkPredict && . activate keras && python test_script.py';
$output = shell_exec($command);
我得到以下错误:
非法指令(内核转储)

我了解到,当CPU不支持新版本Tensorflow中的指令时,问题通常会发生。所以我降到了Tensorflow 1.5

但是,当我运行
cd testModels/crosswalkPredict&&时,不会发生此错误。直接从终端激活keras&&python test_script.py
;只有在PHP
shell\u exec
函数中运行它时,才会发生这种情况

我甚至尝试了python脚本,只使用了以下几行代码:

import tensorflow
print('Hello!')
它仍然会给出相同的错误,因此我知道当我所做的只是导入tensorflow并使用
shell\u exec
运行脚本时,就会出现问题


可能是什么问题?

这是一个已知的TensorFlow兼容性问题,在旧CPU上支持AVX,如果您从以下来源编译TensorFlow,它可能会得到修复:


这是已知的TensorFlow与旧CPU上的AVX支持的兼容性问题,如果您从以下源代码编译TensorFlow,则可以修复此问题:


我解决了这个问题。正如我在几条评论中提到的,我使用的是python虚拟环境。当我从命令行执行python脚本时,使用了python虚拟环境中的python解释器,一切正常。每当我执行脚本rom
shell\u exec
时,就会使用python解释器的默认安装,这就是发生错误的地方

我在使用python虚拟环境方面不是很有经验,所以这可能就是我花了这么长时间才理解这个问题的原因。幸运的是,MohammedAyoubBENJELLOUN关于shell_exec使用默认python安装的评论让我走上了正确的道路,我从中找到了答案

为了解决这个问题,我只是在python虚拟环境中的解释器路径上调用python解释器,而不是尝试激活虚拟环境然后执行

例如,我使用:

/home/user01/anaconda3/envs/keras/bin/python test_script.py
而不是:

. activate keras && python test_script.py

我解决了这个问题。正如我在几条评论中提到的,我使用的是python虚拟环境。当我从命令行执行python脚本时,使用了python虚拟环境中的python解释器,一切正常。每当我执行脚本rom
shell\u exec
时,就会使用python解释器的默认安装,这就是发生错误的地方

我在使用python虚拟环境方面不是很有经验,所以这可能就是我花了这么长时间才理解这个问题的原因。幸运的是,MohammedAyoubBENJELLOUN关于shell_exec使用默认python安装的评论让我走上了正确的道路,我从中找到了答案

为了解决这个问题,我只是在python虚拟环境中的解释器路径上调用python解释器,而不是尝试激活虚拟环境然后执行

例如,我使用:

/home/user01/anaconda3/envs/keras/bin/python test_script.py
而不是:

. activate keras && python test_script.py

您能运行任何其他shell命令吗?例如,我可以毫无问题地运行其他shell命令。我只是在运行使用tensorflow/keras的脚本时遇到错误。对于exmaple,在带有打印的最小化脚本(Hello)中,如果我注释掉“import tensorflow”行,一切都会正常工作。您的
testModels
文件夹在哪里?它属于您的php项目吗?尝试用文件的完整路径替换该部分。我的PHP文件名为
crosswalkPredict.PHP
,位于
/home/user01/Desktop/transportation
,而我的testModels文件夹位于同一目录(
/home/user01/Desktop/transportation
)中。是否可以运行任何其他shell命令?例如,我可以毫无问题地运行其他shell命令。我只是在运行使用tensorflow/keras的脚本时遇到错误。对于exmaple,在带有打印的最小化脚本(Hello)中,如果我注释掉“import tensorflow”行,一切都会正常工作。您的
testModels
文件夹在哪里?它属于您的php项目吗?尝试用文件的完整路径替换该部分。我的PHP文件名为
crosswalkPredict.PHP
,位于
/home/user01/Desktop/transportation
,我的testModels文件夹位于同一目录(
/home/user01/Desktop/transportation
)。如果我尝试运行使用TensorFlow的python脚本,我直接从命令行运行它,它运行得很好,而如果我使用
shell\u exec()
运行它,我会得到错误。如果从命令行运行时没有出现错误,是否仍有可能是CPU兼容性问题?如果我尝试运行使用TensorFlow的python脚本,并直接从命令行运行它,它会运行得很好,而如果使用
shell\u exec()
运行它,则会出现错误。如果从命令行运行时没有收到错误,是否仍然可能是CPU兼容性问题?